回答:
os.system("sudo python scale1.py")
まず、osモジュールをインポートする必要があります
import os
私はテストするためのATMを持っていませんが、これはこの質問に対する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などのいくつかの古いモジュールと機能を置き換えます。引数をサニタイズするのに良い仕事をするので、シェルインジェクションからあなたを守ります。
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() [...] #コマンドラインから呼び出された場合のみ実行する __name__ == '__main__'の場合: run()
#Scale1.py Scale2をインポートする if(GPIO.input(23)== False): Scale2.run()
cleanest
答えになります。