我正在尝试使用Python中的子进程模块在命令行上调用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中执行此操作,那将非常感激。提前谢谢!
答案 0 :(得分: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)