[英]Calling subprocess.call(...) yields in error "[WinError 2] System can't find the specified file"
[英]Subprocess.Call fails “The System Cannot Find the File Specified”
我有一个名为Manipula的.exe文件,它的源代码是.msu文件。 我可以通过命令行成功运行我想要的东西,如下所示:
"C:/Flow Check/Run Quick/Applications/Manipula.exe" "C:/Flow Check/Data Processing/BLAISE TO BLAISE.msu"
但是,我无法在Python中模拟这种行为 - 无论我使用什么。 我曾尝试os.system
和subprocess.call
和subprocess.Popen
如果我运行如下的东西
p= subprocess.Popen("C:/Flow Check/Run Quick/Applications/Manipula.exe" "C:/Flow Check/Data Processing/BLAISE TO BLAISE.msu", stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()
我收到一个错误: The System Cannot Find the File Specified.
我已经三重检查,文件显然是因为它在我运行命令行时有效。
当我将shell=True
添加到subprocess.Popen时,出现一个新错误,即没有目录C:/Flow
,我认为因为shell很难处理空间......我只是不知道发生了什么。
当我执行os.system("C:/Flow Check/Run Quick/Applications/Manipula.exe" "C:/Flow Check/Data Processing/BLAISE TO BLAISE.msu")
没有任何反应。
有任何想法吗?
将程序及其参数指定为列表:
p = subprocess.Popen([
"C:/Flow Check/Run Quick/Applications/Manipula.exe",
"C:/Flow Check/Data Processing/BLAISE TO BLAISE.msu"],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
编写字符串文字串行合并字符串:
>>> "abc" "xyz"
'abcxyz'
你没有传两个字符串; 你传入一个字符串,之间没有空格。 Python自动连接相邻的字符串,但两者之间只有空格:
>>> "C:/Flow Check/Run Quick/Applications/Manipula.exe" "C:/Flow Check/Data Processing/BLAISE TO BLAISE.msu"
'C:/Flow Check/Run Quick/Applications/Manipula.exeC:/Flow Check/Data Processing/BLAISE TO BLAISE.msu'
请注意.exe
和C:/Flow
之间没有空格。
将两个字符串放在一个列表中:
p = subprocess.Popen(["C:/Flow Check/Run Quick/Applications/Manipula.exe", "C:/Flow Check/Data Processing/BLAISE TO BLAISE.msu"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
现在, Popen()
将处理正确引用的字符串作为一个命令传递给底层操作系统。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.