【问题标题】:Python Popen shell=False causes OSError: [Errno 2] No such file or directoryPython Popen shell=False 导致 OSError: [Errno 2] No such file or directory
【发布时间】:2014-05-21 15:15:18
【问题描述】:

我正在尝试使用 shell=False 在 OSX 中运行以下 Popen 命令:

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 中运行,我知道目录路径、斜杠等。

【问题讨论】:

  • 哦,如果只有 Python 可以吐出它试图运行的内容,这样人们就可以知道它找不到什么文件或目录......

标签: python popen


【解决方案1】:

Popen 的第一个参数应该是一个参数列表。否则,您会告诉它找到一个名称奇怪的可执行文件。 可以使用shlex.split()正确拆分

点赞Popen(shlex.split(command), shell=False, stdin=PIPE)

进一步阅读:Popen docs

【讨论】:

  • 对于 windows 我将更改为 command = "C:\\progra~2\\itms\\iTMSTransporter -m verify -f /Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp -u username -p密码 -o /Volumes/Stuff/Temp/TMP_S_0_V_TV2.itmsp/LOGFILE.txt -s provider -v eXtreme" 但现在出现错误 WindowsError: [错误 2] 系统找不到指定的文件,不确定发生了什么。跨度>
  • 你不应该改变参数的路径来有windows风格的斜线吗?来自os.pathos.path.normpath 可能会有所帮助。 docs.python.org/2/library/os.path.html
猜你喜欢
  • 2015-03-17
  • 1970-01-01
  • 2019-03-25
  • 2016-06-07
  • 2017-07-05
  • 2018-11-20
  • 2018-07-24
  • 1970-01-01
  • 2018-01-21
相关资源
最近更新 更多