我有一个从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
有什么想法吗?
非常感谢
答案 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)