无法使用subprocess.Popen()运行进程

时间:2012-03-16 10:02:35

标签: python multiprocessing

我有一个从python程序运行的命令

python test.py arg1 arg2 

如果我使用

运行它
os.system("python test.py arg1 arg2")

它运行。

我想使用subprocess.Popen()但是当我这样做时

subprocess.Popen("python test.py arg1 arg2")

它出现以下错误

raise child_exception
OSError: [Errno 2] No such file or directory

有什么想法吗?

非常感谢

2 个答案:

答案 0 :(得分:3)

尝试将所有参数放在列表中:

subprocess.Popen(["python", "test.py", "arg1", "arg2"])

请参阅:http://docs.python.org/library/subprocess.html#subprocess.Popen

答案 1 :(得分:3)

如果Popen的参数是一个字符串,它会尝试将其作为'sh <argument>'执行,因此在您的情况下它变为'sh python test.py arg1 arg2'显然是错误的。您可以将其传递给列表(如建议的那样),或指定shell=True参数。下一个应该工作:

subprocess.Popen("python test.py arg1 arg2", shell=True)