未完成路径识别(FFmpeg)

11 浏览
0 Comments

未完成路径识别(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日
0
0 Comments

这里有一种不同的操作方式。

如果你使用的是Windows,以下操作类似于在资源管理器中双击文件,或者将文件名作为DOS“start”命令的参数:文件将使用与其扩展名关联的应用程序(如果有的话)打开。

filepath = 'textfile.txt'
import os
os.startfile(filepath)

例如:

import os
os.startfile('textfile.txt')

这将使用记事本打开textfile.txt文件,如果记事本与.txt文件相关联。

0
0 Comments

subprocess.call会避免处理各种Shell引号约定时出现的问题。 它接受一个列表,而不是一个字符串,因此参数更容易进行分隔。 例如:

import subprocess
subprocess.call(['C:\\Temp\\a b c\\Notepad.exe', 'C:\\test.txt'])

0