如何从Python中执行程序?由于路径中有空格,os.system执行失败
如何从Python中执行程序?由于路径中有空格,os.system执行失败
我有一个需要执行外部程序的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();
注意单引号和双引号的交换。
在这里无论是否带参数到记事本,它都会失败并显示以下错误信息:
文件名、目录名或卷标语法不正确。
admin 更改状态以发布 2023年5月20日
subprocess.call
会避免不同的shell引号使用规则的问题。它接受一个列表,而不是字符串,因此参数更容易被定界。例如:
import subprocess subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])