我有一个Python脚本需要执行外部程序,但由于某种原因失败了。
如果我有以下脚本:
import os;
os.system("C:\\Temp\\a b c\\Notepad.exe");
raw_input();
然后它失败并出现以下错误:
“C:\Temp\a”不被识别为内部或外部命令、可操作程序或批处理文件。
如果我用引号转义程序:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe"');
raw_input();
然后就可以了。但是,如果我添加一个参数,它会再次停止工作:
import os;
os.system('"C:\\Temp\\a b c\\Notepad.exe" "C:\\test.txt"');
raw_input();
执行程序并等待其完成的正确方法是什么?我不需要读取它的输出,因为它是一个可视化程序,完成工作然后退出,但我需要等待它完成。
另请注意,将程序移动到非间隔路径也不是一个选项。
这也不起作用:
import os;
os.system("'C:\\Temp\\a b c\\Notepad.exe'");
raw_input();
请注意交换的单/双引号。
无论这里有或没有记事本参数,它都会失败并显示错误消息
文件名、目录名或卷标语法不正确。
subprocess.call http://docs.python.org/2/library/subprocess.html#using-the-subprocess-module将避免必须处理各种 shell 的引用约定的问题。它接受列表而不是字符串,因此更容易分隔参数。 IE。
import subprocess
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)