0

異なる引数を使用して、別の python-script 内から python スクリプトを複数回実行する必要があります。恐ろしいことに聞こえるかもしれませんが、それには理由があります。ただし、問題は、呼び出し先スクリプトがインポートまたは実行されているかどうかを確認しないことです (if __name__ == '__main__': ...)。

  1. subprocess.popen("python.exe callee.py -arg") を使用できることはわかっていますが、本来よりもはるかに遅いようです.Python.exeが複数回開始および終了されているためだと思います.
  2. 最初に説明した設計のため、スクリプトをモジュールとして定期的にインポートすることはできません。インポートすると、 main() メソッドがないため、引数なしで実行されます。
  3. 呼び出し先スクリプトも変更できません
  4. 私が理解しているように、引数を取らないため、 execfile() も使用できません
4

1 に答える 1

2

あなたのための解決策を見つけました。Python でモジュールをリロードし、sys.argv にパッチを適用できます。

echo.py が、複数回呼び出したい呼び出し先スクリプトであると想像してください。

#!/usr/bin/env python
# file: echo.py

import sys
print sys.argv

呼び出し元スクリプトとして実行できます:

#!/usr/bin/env python
# file: test.py 
import sys
sys.argv[1] = 'test1'
import echo
sys.argv[1] = 'test2'
reload(echo)

そして、たとえば次のように呼び出します: python test.py place_holder

それは印刷されます:

['test.py', 'test1']
['test.py', 'test2']
于 2012-08-28T14:55:46.910 に答える