相当于 os.system 没有控制台 window?
Equivalent of os.system without a console window?
我有一条线可以与 os.system
一起使用;
os.system("ffmpeg -i file.smh -acodec libmp3lame file.mp3")
其中ffmpeg
是一个exe文件。但它在屏幕上创建了一个控制台 window。通常我通过以下方式隐藏控制台 window:
import win32console,win32gui
win = win32console.GetConsoleWindow()
win32gui.ShowWindow(win,1)
我试过了,但没用。 os.system
仍然显示控制台 window。所以我有两个选择:
- 如果我使用
os.system
,我需要一种隐藏控制台 window 的方法。
- 或者我需要
subprocess
相当于 os.system
。
我尝试使用 subprocess.Popen(["ffmpeg.exe -i file.smh -acodec libmp3lame file.mp3"])
,但找不到 ffmpeg.exe。
我该如何解决这个问题?
subprocess.Popen(["ffmpeg.exe -i file.smh -acodec libmp3lame file.mp3"])
应该是:
subprocess.Popen(["ffmpeg.exe", "-i", "file.smh", "-acodec", "libmp3lame file.mp3"])
按照您的方式,您的 OS 将查找名为 ffmpeg.exe -i ...
的可执行文件,而不是名为 ffmpeg
且 -i
、file.smh
的可执行文件, ... 作为参数
如果由于某种原因拆分参数有问题,您可以使用 shlex.split
为您正确拆分参数(它将正确处理拆分引用的参数)。
我有一条线可以与 os.system
一起使用;
os.system("ffmpeg -i file.smh -acodec libmp3lame file.mp3")
其中ffmpeg
是一个exe文件。但它在屏幕上创建了一个控制台 window。通常我通过以下方式隐藏控制台 window:
import win32console,win32gui
win = win32console.GetConsoleWindow()
win32gui.ShowWindow(win,1)
我试过了,但没用。 os.system
仍然显示控制台 window。所以我有两个选择:
- 如果我使用
os.system
,我需要一种隐藏控制台 window 的方法。 - 或者我需要
subprocess
相当于os.system
。
我尝试使用 subprocess.Popen(["ffmpeg.exe -i file.smh -acodec libmp3lame file.mp3"])
,但找不到 ffmpeg.exe。
我该如何解决这个问题?
subprocess.Popen(["ffmpeg.exe -i file.smh -acodec libmp3lame file.mp3"])
应该是:
subprocess.Popen(["ffmpeg.exe", "-i", "file.smh", "-acodec", "libmp3lame file.mp3"])
按照您的方式,您的 OS 将查找名为 ffmpeg.exe -i ...
的可执行文件,而不是名为 ffmpeg
且 -i
、file.smh
的可执行文件, ... 作为参数
如果由于某种原因拆分参数有问题,您可以使用 shlex.split
为您正确拆分参数(它将正确处理拆分引用的参数)。