如何在Python脚本中调用PiPresents并指定pp_mediashow_1p3配置启动演示?
在Python脚本中给PiPresents传递启动参数的正确方式
嘿,刚好碰到过类似的需求,我来帮你搞定这个参数传递的问题!
你现在用subprocess.run("/home/pi/pipresents/pipresents.py")只启动了脚本,但没传递-p pp_mediashow_1p3参数,其实用subprocess有两种靠谱的方式来实现:
方式一:推荐的列表式传参(安全无风险)
subprocess.run()最推荐的用法是把命令拆成一个个独立的元素放进列表里,这样能避免shell注入的安全问题,也不会因为参数里有特殊字符出问题。对应你要执行的命令,代码应该写成这样:
import subprocess subprocess.run(["python", "/home/pi/pipresents/pipresents.py", "-p", "pp_mediashow_1p3"])
这里每个空格分隔的部分都是列表里的一个元素,-p是参数名,pp_mediashow_1p3是对应的值,这样PiPresents就能正确识别到你要加载的演示配置了。
方式二:使用shell=True(按需选择,注意安全)
如果你更习惯直接写完整的命令字符串,可以加上shell=True参数,但要注意:如果你的参数里包含来自不可信来源的内容,这种方式会有安全风险,所以只在参数固定的情况下用比较稳妥:
import subprocess subprocess.run("python /home/pi/pipresents/pipresents.py -p pp_mediashow_1p3", shell=True)
额外小提示
如果PiPresents需要从指定目录加载配置文件(也就是你提到的/home/pi/pp_home/pp_mediashow_1p3下的json文件),可以在subprocess.run()里加上cwd参数指定工作目录,确保脚本能正确找到配置:
import subprocess subprocess.run( ["python", "/home/pi/pipresents/pipresents.py", "-p", "pp_mediashow_1p3"], cwd="/home/pi/pp_home/pp_mediashow_1p3" )
不过一般来说PiPresents会根据-p参数自动定位到对应的配置目录,这个可以根据实际运行情况调整。
内容的提问来源于stack exchange,提问作者Raffael Gangelberger
相关产品推荐
相关产品推荐

