如何用Python启动Audacity并在同一窗口加载多音频及正常关闭
问题解决方法
1. 同一窗口加载多个音频文件
你的代码存在路径转义问题:Windows路径中的反斜杠\在Python字符串里属于转义字符,直接写"C:\Program Files\Audacity\audacity.exe"会导致路径解析错误,这可能是触发多窗口打开的原因之一。
Audacity命令行支持启动时直接加载多个文件到同一窗口,若Audacity已运行,还可通过--import参数将文件导入现有窗口。修正后的代码如下:
import subprocess import os original_mic_file = "A.wav" cleaned_mic_file = "B.wav" if os.name == 'nt': # Windows # 用原始字符串避免转义问题 audacity_path = r"C:\Program Files\Audacity\audacity.exe" # 首次启动Audacity并加载多个文件(同一窗口生成多轨道) subprocess.Popen([audacity_path, original_mic_file, cleaned_mic_file]) # 若Audacity已运行,用此命令导入文件到现有窗口 # subprocess.Popen([audacity_path, "--import", original_mic_file, cleaned_mic_file])
2. 正常关闭Audacity避免崩溃提示
有两种可靠方式实现正常退出:
方式一:用Audacity命令行参数直接退出
调用--quit --no-save参数,让Audacity不保存项目直接退出:
import subprocess import os if os.name == 'nt': audacity_path = r"C:\Program Files\Audacity\audacity.exe" # 不保存项目直接退出Audacity subprocess.Popen([audacity_path, "--quit", "--no-save"])
方式二:通过进程ID终止(针对脚本启动的Audacity实例)
保存启动时的进程对象,先尝试正常终止,超时则强制杀死:
import subprocess import os import time original_mic_file = "A.wav" cleaned_mic_file = "B.wav" if os.name == 'nt': audacity_path = r"C:\Program Files\Audacity\audacity.exe" # 启动Audacity并保存进程对象 audacity_proc = subprocess.Popen([audacity_path, original_mic_file, cleaned_mic_file]) # 模拟运行一段时间后关闭 time.sleep(10) # 优先正常终止,失败则强制杀死 try: audacity_proc.terminate() audacity_proc.wait(timeout=5) except subprocess.TimeoutExpired: audacity_proc.kill()
若需关闭所有Audacity实例,可使用Windows的taskkill命令:
subprocess.run(["taskkill", "/f", "/im", "audacity.exe"], check=True)
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

