0

別の Python スクリプトで Python スクリプトを呼び出そうとしています。ディレクトリが異なります。私は試した

import subprocess
subprocess.call("C:\temp\hello2.py", shell=True)

しかし、何も得られませんでした。それは動作しません。多くのフォーラムを確認しましたが、それらはすべて、両方のスクリプトが同じディレクトリにあるときに呼び出すことに関するものでした。

両方のスクリプトを同じディレクトリに置いてみました。この場合、Python.exe で (cmd ウィンドウを介して) モデルを実行できますが、IDLE では実行できません。IDLE では、エラー メッセージすら表示されません。

他のスクリプトを別のモジュールとして定義できないなど、本当にそうする必要があります。別のスクリプトでスクリプトを呼び出す必要があります。

4

4 に答える 4

6

エスケープ バックスラッシュ ( \)

"C:\\temp\\hello2.py"

または生の文字列を使用する

r"C:\temp\hello2.py"

>>> print "C:\temp\hello2.py"
C:      emp\hello2.py
>>> print "C:\\temp\\hello2.py"
C:\temp\hello2.py
>>> print r"C:\temp\hello2.py"
C:\temp\hello2.py
于 2013-08-08T15:52:46.047 に答える
1

最初にバックスラッシュを使用し、次に常にpython インタープリターを使用して python スクリプトを呼び出す必要があります。*.pyファイルが何に関連付けられているかはわかりません。そう:

import sys
import subprocess
subprocess.call([sys.executable, 'C:\\temp\\hello2.py'], shell=True)
于 2013-08-08T15:57:55.427 に答える
1

sys.path リストを変更することでアプローチできると思います。

import sys
sys.path.append("C:\\temp\\")
import hello2
于 2013-08-08T16:23:37.303 に答える
1

「別のスクリプトを別のモジュールとして定義できないなど。別のスクリプトでスクリプトを呼び出す必要がある」という意味がわかりませんが、インポートするだけでサブプロセス全体のビジネスを回避できると思いますこの回答のように、他のpythonスクリプト。

すなわち

import imp

hello2 = imp.load_source("hello2", 'C:\temp\hello2.py')

これで hello2.py スクリプトが実行されるはずです。状況の制約を誤解していたら申し訳ありません。

于 2013-08-08T16:11:40.857 に答える