从python中执行命令行程序

Mat*_*ias 260 python command-line

可能重复:
在Python中调用外部命令

我正在构建一个Web应用程序,它将操纵(填充,混合,合并等)声音文件,我发现sox完全符合我的要求.Sox是一个linux命令行程序,让我感到有点不舒服的是让python web应用程序在我的服务器上基于每个请求启动新的sox进程.

例:

import os
os.system('sox input.wav -b 24 output.aiff rate -v -L -b 90 48k')
Run Code Online (Sandbox Code Playgroud)

整个设置对我来说似乎有点不稳定.

所以我的问题是,在python(或任何脚本语言)Web应用程序中运行命令行程序的最佳实践是什么?

为了绕过整个请求响应周期,消息队列将是一件要实现的事情.但还有其他方法可以让这些东西更优雅吗?

dF.*_*dF. 251

subprocess模块是从Python运行其他程序的首选方式 - 比使用它更灵活,更好os.system.

import subprocess
#subprocess.check_output(['ls','-l']) #all that is technically needed...
print subprocess.check_output(['ls','-l'])
Run Code Online (Sandbox Code Playgroud)

  • 导入子流程; subprocess.check_output(['ls',' - l']).在命令行中使用ls -l.check_output()也返回命令的输出. (6认同)
  • 通过使用`subprocess.check_call(['ls','-l'])`,您不需要打印输出。 (3认同)
  • 使用“os”有什么问题? (2认同)

S.L*_*ott 22

"整个设置对我来说似乎有点不稳定."

ffmpegx人员讨论在命令行后端拥有GUI前端的问题.它似乎没有打扰他们.

实际上,我认为命令行后端的GUI(或Web)前端实际上更稳定,因为GUI和命令之间有一个非常非常干净的接口.该命令可以以与Web不同的速度发展,只要命令行选项兼容,您就不会有破损的可能性.