在Python中使用os或subprocess模块在后台运行命令行程序
我想在Python中使用os
或subprocess
模块来运行一个命令。可是命令提示符窗口闪了一下就关掉了。有没有办法让这个命令提示符窗口不弹出来呢?
比如说:
os.system("ffmpeg -i output.wav output.flac")
有没有办法让我在后台运行这个命令,这样用户就不会注意到它的存在了呢?
我在使用Windows 7,Python版本是2.7。
3 个回答
0
这个代码定义了一个叫做`asyncRun`的函数,它的作用是执行你给它的命令。具体来说,它使用了`os.system`这个功能来运行命令。
接下来,代码创建了一个线程`t`,这个线程的任务是运行`asyncRun`函数,并且传入了一个参数,也就是要执行的命令`ping 127.0.0.1 -s 271`。
最后,`t.start()`这行代码是用来启动这个线程的,也就是说,它会开始执行上面定义的命令。
这段代码可以在Windows 10系统上运行,配合EMET(增强的安全防护工具)和Python 2.7版本。
0
当然了……你甚至还标记了你会用到的模块……
subproccess.Popen("ffmpeg -i output.wav output.flac".split(),shell=True).communicate()
这样做应该没问题……
1
最简单的方法就是利用一下 subprocess
模块对 STARTUPINFO
结构的部分支持。可以试试这样做:
info = subprocess.STARTUP_INFO()
info.dwFlags = subprocess.STARTF_USESTDHANDLES | subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = subprocess.SW_HIDE
process = subprocess.Popen("ffmpeg -i output.wav output.flac", startupinfo=info)
process.wait()