2つのファイルがあります。script1.pyとscript2.pyです。 script1.pyからscript2.pyを呼び出し、script2.pyからの値をscript1.pyに返す必要があります。しかし、問題は、script1.pyが実際にosを通じてscript2.pyを実行することです。
script1.py:
import os
print(os.system("script2.py 34"))
script2.py
import sys
def main():
x="Hello World"+str(sys.argv[1])
return x
if __name__ == "__main__":
x= main()
ご覧のとおり、script2に値を取得できますが、script1には戻せません。どうやってやるの?注:script2.pyは、コマンドライン実行のように呼び出す必要があります。それが私がOSを使用している理由です。
OK、私があなたを正しく理解しているなら、
サブプロセスモジュールの使用をお勧めします。最も簡単な方法は、 check_output() 関数を使用することです。
引数を指定してコマンドを実行し、その出力をバイト文字列として返します。
サンプルソリューション:
script1.py
import sys
import subprocess
s2_out = subprocess.check_output([sys.executable, "script2.py", "34"])
print s2_out
script2.py:
import sys
def main(arg):
print("Hello World"+arg)
if __name__ == "__main__":
main(sys.argv[1])
あるpython "script"から別の値に値を返すための推奨される方法は、スクリプトをPythonモジュールとしてインポートし、関数を直接呼び出すことです。
_import another_module
value = another_module.get_value(34)
_
ここで、_another_module.py
_は次のとおりです。
_#!/usr/bin/env python
def get_value(*args):
return "Hello World " + ":".join(map(str, args))
def main(argv):
print(get_value(*argv[1:]))
if __name__ == "__main__":
import sys
main(sys.argv)
_
_another_module
_をインポートして、コマンドラインからスクリプトとして実行できます。コマンドラインスクリプトとして実行する必要がない場合は、main()
関数と_if __name__ == "__main__"
_ブロックを削除できます。
また、 Call pythonスクリプトを入力し、pythonサブプロセスを使用するスクリプト で入力します。