【发布时间】:2020-10-27 19:10:15
【问题描述】:
我正在使用音频编解码器并尝试压缩音频文件。为此,Linux 命令是
opusenc --bitrate 16 input_file.wav output_file.opus
现在要运行这个命令,我正在使用子进程,我的代码是
import subprocess
wav_file_path = '/home/mds-student/Documents/aDITYA/IEMOCAP/Ses01F_impro01.wav'
file_name = wav_file_path.split('.')[0]
file_name = os.path.basename(file_name)
bitrate = 16
cmd = ['opusenc', '--bitrate',bitrate ,wav_file_path, file_name, '.opus']
print(cmd)
subprocess.call(cmd)
这会引发错误
Traceback (most recent call last):
File "src/9_opus_conversion_files.py", line 78, in <module>
subprocess.call(cmd)
File "/home/mds-student/anaconda3/envs/venv/lib/python3.6/subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "/home/mds-student/anaconda3/envs/venv/lib/python3.6/subprocess.py", line 1295, in _execute_child
restore_signals, start_new_session, preexec_fn)
TypeError: expected str, bytes or os.PathLike object, not int
我做错了什么?
【问题讨论】:
-
查看错误消息和第一行(错误“开始”的位置)。它告诉您
int出现在意料之外的地方。既然你知道cmd是list,这不是问题,那么它在列表中。列表中唯一的int是bitrate,因此最好将其转换为其中一种预期类型。 -
@RufusVS 是的,我将比特率转换为 str,效果很好。
标签: python subprocess