我有一行可以与os.system
一样使用
os.system("ffmpeg -i file.smh -acodec libmp3lame file.mp3")
其中ffmpeg
是exe文件。但它在屏幕上创建了一个控制台窗口。通常我会通过以下方式隐藏控制台窗口:
import win32console,win32gui
win = win32console.GetConsoleWindow()
win32gui.ShowWindow(win,1)
我试过了,但它没有用。 os.system
仍然显示控制台窗口。所以我有两个选择:
os.system
,我需要一种隐藏控制台窗口的方法。subprocess
相当于os.system
。我尝试使用subprocess.Popen(["ffmpeg.exe -i file.smh -acodec libmp3lame file.mp3"])
,但无法找到ffmpeg.exe。
我该如何解决这个问题?
答案 0 :(得分:1)
subprocess.Popen(["ffmpeg.exe -i file.smh -acodec libmp3lame file.mp3"])
应该是:
subprocess.Popen(["ffmpeg.exe", "-i", "file.smh", "-acodec", "libmp3lame file.mp3"])
您喜欢它的方式,您的操作系统将查找名为ffmpeg.exe -i ...
的可执行文件,而不是名为ffmpeg
的可执行文件-i
,file.smh
,...作为参数
如果由于某种原因拆分参数是有问题的,您可以使用shlex.split
为您正确地拆分参数(它将正确处理拆分引用的参数)。