如何在Python中执行复杂的SoX命令行字符串
我正在尝试在命令行中使用Python的subprocess模块来调用SoX,以处理一个音频文件。
但是Python却说找不到文件,尽管我在命令行直接输入同样的命令时却能正常工作。
所以看起来是Python对我构造的命令不满意——我觉得它不喜欢双引号,但我不知道该怎么写才能让Python接受。以下是Python不喜欢的命令:
s = ['sox', '-m', 'path/to/silence.wav',
'"|sox path/to/audio1.wav -p pad 0"',
'"|sox path/to/audio2.wav -p pad 5"',
'"|sox path/to/audio3.wav -p pad 10"',
'path/to/output.wav']
subprocess.call(s)
这是从命令行调用的同样的命令,能够正常工作:
sox -m path/to/silence.wav "|sox path/to/audio1.wav -p pad 0" "|sox path/to/audio2.wav -p pad 5" "|sox path/to/audio3.wav -p pad 10" path/to/output.wav
如果有哪位Python高手能给我一个在.py文件中执行这个命令的例子,我将非常感激。提前谢谢你们!
1 个回答
1
问题解决了,我只需要去掉双引号……真是傻我了。下面是上面例子的正确Python代码:
s = ['sox', '-m', 'path/to/silence.wav',
'|sox path/to/audio1.wav -p pad 0',
'|sox path/to/audio2.wav -p pad 5',
'|sox path/to/audio3.wav -p pad 10',
'path/to/output.wav']
subprocess.call(s)