Python Popen shell=False 导致 OSError: [Errno 2] 找不到文件或目录
我正在尝试在OSX上运行下面这个Popen命令,使用的是shell=False:
command = "/usr/local/itms/share/iTMSTransporter.woa/iTMSTransporter -m verify -f /Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp -u username -p password -o /Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp/LOGFILE.txt -s provider -v eXtreme"
self.process1 = Popen(command, shell=False, stdin=PIPE)
但是我遇到了这个错误:
raise child_exception
OSError: [Errno 2] No such file or directory
到底出了什么问题呢?我还需要这个在Windows上也能正常工作,我知道目录路径、斜杠等等。
1 个回答
11
Popen的第一个参数应该是一个参数列表。否则,你就是在告诉它去找一个名字奇怪的可执行文件。你可以使用 shlex.split()
来正确地分割这些参数。
比如可以这样写: Popen(shlex.split(command), shell=False, stdin=PIPE)
想了解更多,可以查看这篇文档: Popen文档