相当于没有控制台窗口的os.system?

时间:2016-06-06 05:17:35

标签: python windows python-3.4 windows-console

我有一行可以与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。

我该如何解决这个问题?

1 个答案:

答案 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的可执行文件-ifile.smh,...作为参数

如果由于某种原因拆分参数是有问题的,您可以使用shlex.split为您正确地拆分参数(它将正确处理拆分引用的参数)。