如何用Python脚本重复运行带参数的CLI命令批量处理WAV文件
批量处理WAV文件生成Talkie LPC代码的Python脚本
以下是实现批量处理的Python脚本,自动遍历指定目录下的所有WAV文件,重复调用目标CLI命令并将结果追加到wavelpc.h中:
import os import subprocess # 配置参数 WAV_DIR = "./" # WAV文件所在目录,当前目录用./,可替换为实际路径 OUTPUT_FILE = "wavelpc.h" CLI_COMMAND_BASE = ["python3", "python_wizard", "-S", "-T", "tms5220", "-f", "arduino"] # 以追加模式打开输出文件 with open(OUTPUT_FILE, "a") as out_file: # 遍历目录下的所有文件 for filename in os.listdir(WAV_DIR): # 筛选出WAV文件 if filename.lower().endswith(".wav"): wav_path = os.path.join(WAV_DIR, filename) print(f"正在处理文件: {wav_path}") # 拼接完整的CLI命令 full_command = CLI_COMMAND_BASE + [wav_path] try: # 执行命令并捕获输出 result = subprocess.run( full_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True ) # 将命令输出写入到目标文件 out_file.write(result.stdout) out_file.write("\n") # 可选:添加换行分隔不同文件的输出 except subprocess.CalledProcessError as e: print(f"处理文件 {filename} 失败: {e.stderr}") except Exception as e: print(f"处理文件 {filename} 时发生未知错误: {str(e)}") print("批量处理完成!")
使用说明
- 把上述代码保存为
batch_convert.py - 确保脚本和
python_wizard在同一目录,或者在CLI_COMMAND_BASE中指定python_wizard的完整路径(比如/home/user/scripts/python_wizard) - 如果WAV文件不在当前目录,修改
WAV_DIR为实际路径(比如./wav_files) - 运行脚本:
python3 batch_convert.py
关键细节
- 使用
subprocess.run替代直接调用shell,避免安全风险,同时更稳定地处理命令执行 - 以追加模式打开
wavelpc.h,确保所有文件的输出都被添加到同一个文件中 - 捕获命令执行的错误信息,方便排查处理失败的文件
- 自动筛选
.wav后缀的文件,避免处理无关文件
内容的提问来源于stack exchange,提问作者Stephen Adams
相关产品推荐
相关产品推荐

