树莓派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
相关产品推荐
相关产品推荐

