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

我不确定您所说的“我不能将其他脚本定义为不同的模块等。我需要在另一个脚本中调用脚本。”但我认为您可以通过导入来避免整个子流程业务你的其他 python 脚本,如在这个答案中。

IE

import imp

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

那应该运行你的 hello2.py 脚本 - 如果我误解了你的情况的限制,对不起。

于 2013-08-08T16:11:40.857 回答
1

我认为我们可以通过更改 sys.path 列表来寻求一种方法。

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