You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何多个os.system()调用仅执行首个?sstv命令执行问题求助

问题原因

你用了cmd /k执行命令,/k的作用是执行指定命令后保持命令行窗口打开,这会导致第一个os.system调用一直阻塞,程序无法继续执行后续命令。

解决方法

1. 替换/k为/c

cmd /c会在执行命令后自动关闭窗口,第一个命令执行完毕后,程序会继续走后续代码:

def processSegments():
    os.system('''cmd /c "sstv -d AMEA_Transmission_0-1805600.wav -o AMEA_Data_Result_0-1805600.png"''')
    os.system('''cmd /c "sstv -d AMEA_Transmission_1805600-3625800.wav -o AMEA_Data_Result_1805600-3625800.png"''')

2. 批量处理优化

既然有多个分割后的音频文件,没必要手动写每个命令,用循环自动遍历处理更高效:

import glob

def processSegments():
    # 匹配所有分割后的音频文件
    for audio_path in glob.glob("AMEA_Transmission_*.wav"):
        # 自动生成对应的输出图片路径
        file_part = audio_path.split(".wav")[0]
        output_path = file_part.replace("Transmission", "Data_Result") + ".png"
        # 执行转换命令
        os.system(f'''cmd /c "sstv -d {audio_path} -o {output_path}"''')

不管分割出多少个文件,都能自动处理,不用每次手动添加命令。

3. 进阶:用subprocess替代os.system

subprocess是Python官方推荐的替代os.system的工具,功能更完善,还能捕获命令执行状态:

import subprocess
import glob

def processSegments():
    for audio_path in glob.glob("AMEA_Transmission_*.wav"):
        file_part = audio_path.split(".wav")[0]
        output_path = file_part.replace("Transmission", "Data_Result") + ".png"
        subprocess.run(
            ["sstv", "-d", audio_path, "-o", output_path],
            shell=True,
            check=True
        )

内容的提问来源于stack exchange,提问作者James Ervin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:33:35