从Python程序写入FIFO

从Python程序写入FIFO,第1张

概述我试图从 python程序控制mplayer的数量. mplayer程序从bash脚本开始: #!/bin/bashmkfifo /home/administrator/files/mplayer-control.pipe/usr/bin/mplayer -slave -input file=/home/administrator/files/mplayer-control.pipe /hom 我试图从 python程序控制mplayer的数量. mplayer程序从bash脚本开始:

#!/bin/bashmkfifo /home/administrator/files/mplayer-control.pipe/usr/bin/mplayer -slave -input file=/home/administrator/files/mplayer-control.pipe /home/administrator/music/file.mp3

然后我有一个用Python编写的GUI,它应该能够控制正在播放的mplayer实例的音量.我尝试过以下方法:

os.system('echo "set_property volume $musicvol" > /home/administrator/files/mplayer-control.pipe')

如果我用数字值代替$musicvol,那就行了,但遗憾的是没有用.我需要能够传递变量.

我也可以通过调用Python应用程序中的bash脚本来解决它,但我无法让它工作:

subprocess.call("/home/administrator/files/setvolume.sh",executable="bash",shell=True)
解决方法 您不需要调用os.system并调用shell从Python脚本将该行写入FIFO – 您可以这样做:

new_volume = 50with open("/home/administrator/files/mplayer-control.pipe","w") as fp:    fp.write("set_property volume %d\n" % (new_volume,))

我不清楚你期望在你原来的python中发生什么 – 虽然是在环境中设置了musicvol吗?如果它是一个Python变量,你想要插入到你传递的字符串中,最简单的方法是使用字符串插值运算符(%),就像我在上面的例子中所做的那样.

在使用subprocess.call的示例中,如果setvolume.sh是可执行的并且具有#!,则不需要可执行文件或shell关键字参数.线 – 你可以这样做:

subprocess.call("/home/administrator/files/setvolume.sh")

但是,我认为最好只使用上面的open和write.

总结

以上是内存溢出为你收集整理的从Python程序写入FIFO全部内容,希望文章能够帮你解决从Python程序写入FIFO所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存