2つの別々のスクリプトScale1.py
とScale2.py
。それらを実行するには、ターミナルコマンドラインからsudo python Scale1.py
またはsudo python Scale2.py
と入力します。
スクリプト。ボタンを押すと、プログラムが中断してScale1.py
を実行します。このようなものは機能しません。
if GPIO.input(23) == False: break(sudo python Scale1.py)
2つの別々のスクリプトScale1.py
とScale2.py
。それらを実行するには、ターミナルコマンドラインからsudo python Scale1.py
またはsudo python Scale2.py
と入力します。
スクリプト。ボタンを押すと、プログラムが中断してScale1.py
を実行します。このようなものは機能しません。
if GPIO.input(23) == False: break(sudo python Scale1.py)
os.system("sudo python scale1.py")
最初にosモジュールをインポートする必要があります
import os
テストするpiがありませんが、これはこの質問に対する2番目の回答から来ています: https://stackoverflow.com/questions/89228/calling-an-external-command-in-python
通常、 サブプロセス モジュール
subprocess.call(["sudo","python","scale1.py"])
コマンドライン呼び出しの場合。
サブプロセス呼び出しの結果を処理する例;
result = subprocess.check_output(["sudo","service","mpd","restart"])
サブプロセスは、 os.system や os.spawn など、いくつかの古いモジュールと関数を置き換えます。 em>。引数のサニタイズに優れているため、シェルインジェクションから保護します。
https://docs.python.org/2/library/subprocess.html
もちろん、2番目のPythonスクリプトを実行するために、CLI呼び出しは必要ありません。それらをインポートできます。
harry sibが提案したようにsudoを使用できますが、最初のスクリプトを実行しているユーザーを sudoersファイルに追加する必要があります。
別のPythonスクリプトからPythonスクリプトを実行する最良の方法は、それをインポートすることです。 2番目のスクリプトのメソッドにスクリプトのロジックが含まれている必要があります:
# Scale2.py def run(): do_first() do_second() [...] # Run it only if called from the command line if __name__ == "__main__": run()
# Scale1.py import Scale2 if (GPIO.input(23) == False): Scale2.run()
cleanest
の回答になります。
os.system()
はsubprocess
を優先して非難されました。 stackoverflow.com/a/4256153/4212158