在python脚本中调用python脚本

时间:2013-08-08 15:52:01

标签: python call subprocess

我试图在另一个python脚本中调用python脚本。目录是不同的。我试过了

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

但什么也没得到。这是行不通的。我回顾了很多论坛,但是当两个脚本都在同一个目录上时,它们都是关于调用它的。

我尝试将两个脚本放在同一目录中。在这种情况下,我可以在Python.exe(通过cmd窗口)中运行模型,但不能在IDLE中运行。在IDLE中,我甚至没有收到错误消息。

我真的需要这样做,这样我就无法将其他脚本定义为不同的模块等。我需要在另一个脚本中调用脚本。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

首先是反斜杠,然后你应该总是使用python解释器调用python脚本。你永远不知道与*.py相关联的文件是什么。所以:

import sys
import subprocess
subprocess.call([sys.executable, 'C:\\temp\\hello2.py'], shell=True)

答案 2 :(得分:1)

我不确定你的意思是'我不能将其他脚本定义为另一个模块,等等。我需要在另一个脚本中调用脚本。',但我认为你可以避免整个子流程业务只需导入您的其他python脚本,如this answer

import imp

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

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

答案 3 :(得分:1)

我认为我们可以通过改变sys.path列表来寻找方法。

import sys
sys.path.append("C:\\temp\\")
import hello2