繁体   English   中英

Subprocess.Call失败“系统无法找到指定的文件”

[英]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.systemsubprocess.callsubprocess.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'

请注意.exeC:/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM