未完成路径识别(FFmpeg)
未完成路径识别(FFmpeg)
这个问题已经有答案了:
我有一个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月21日
subprocess.call
会避免处理各种Shell引号约定时出现的问题。 它接受一个列表,而不是一个字符串,因此参数更容易进行分隔。 例如:
import subprocess subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])