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

树莓派FM发射项目:Python os.system传参报错,求调频变量设置方案

解决os.system()参数错误问题

os.system()仅支持接收单个字符串参数,你传入了三个独立参数(命令前缀、频率变量、文件路径),因此触发TypeError: system() takes at most 1 argument (3 given)错误。以下是几种可行的修复方式:

方式1:字符串拼接

将变量转为字符串后,与命令前后部分拼接成完整字符串:

import os

frequency = 87  # 自定义频率变量
os.system("sudo /home/radio-station/PI_FM/fm_transmitter/fm_transmitter -b 100 -f " + str(frequency) + " /home/radio-station/Desktop/chuck-berry-route-66.wav")

方式2:f-string格式化(Python3.6+推荐)

用f-string直接将变量嵌入命令字符串,语法简洁直观:

import os

frequency = 87
os.system(f"sudo /home/radio-station/PI_FM/fm_transmitter/fm_transmitter -b 100 -f {frequency} /home/radio-station/Desktop/chuck-berry-route-66.wav")

方式3:str.format()方法

兼容性更强,适合Python3.6之前的版本:

import os

frequency = 87
os.system("sudo /home/radio-station/PI_FM/fm_transmitter/fm_transmitter -b 100 -f {} /home/radio-station/Desktop/chuck-berry-route-66.wav".format(frequency))

更优方案:使用subprocess模块(推荐)

os.system()功能有限,官方更推荐用subprocess模块,它支持拆分命令为列表参数,避免手动拼接字符串的麻烦,还能防范命令注入风险:

import subprocess

frequency = 87
subprocess.run([
    "sudo",
    "/home/radio-station/PI_FM/fm_transmitter/fm_transmitter",
    "-b", "100",
    "-f", str(frequency),
    "/home/radio-station/Desktop/chuck-berry-route-66.wav"
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:02:36