我正在尝试使用 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 中执行此操作的示例,我们将不胜感激。提前致谢!
最佳答案
找到解决方案,我只需要删除双引号...愚蠢的我。以下是上述示例的正确 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)
关于python - 如何在 Python 中执行复杂的 SoX 命令行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336056/