如何将rfcomm shell命令的结果放入python中的变量中?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将rfcomm shell命令的结果放入python中的变量中?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1864字,纯文字阅读大概需要3分钟。
内容图文
![如何将rfcomm shell命令的结果放入python中的变量中?](/upload/InfoBanner/zyjiaocheng/949/1d7e7672044443558a1e06ff09ab171b.jpg)
我正在python中使用此脚本以连接到蓝牙设备,然后获取数据,但是我想知道此shell命令的结果以便进行下一个工作
import os
import time
import signal
import subprocess
p = subprocess.Popen("sudo rfcomm connect /dev/rfcomm0 XX:XX:XX:XX:XX:XX 1",shell=True)
(stderr,stdout) = p.communicate()
print 'stderr: [%s]' % stderr
print 'stdout: [%s]' % stdout
time.sleep(5)
while True:
print "Device is ready"
time.sleep(5)
这段代码是我运行命令时的示例:
"sudo rfcomm connect /dev/rfcomm0 XX:XX:XX:XX:XX:XX 1"
在shell中,它返回:
Connected /dev/rfcomm0 to XX:XX:XX:XX:XX:XX on channel 1
Press CTRL-C for hangup
但是由于我需要知道此命令的结果,如何将结果放在变量之上?
我在子进程中使用stdout,stderr,但不起作用.
我正在使用python 2.7
Python subprocess and user interaction
上面的link讨论了一般情况下如何在变量中获取输出,但是我的问题与rfcomm有关,该问题未将其结果放入变量中,我运行了这些脚本并且它们运行良好,但是与rfcomm一起使用时不起作用命令
解决方法:
如果您使用的是Python 3.5或更高版本,
您可以改用run.这样,您将可以直接访问,
result = subprocess.run(["sudo rfcomm connect /dev/rfcomm0 XX:XX:XX:XX:XX:XX 1"], stdout=subprocess.PIPE)
然后访问您想要的内容,
result.stdout
如果您按照我链接的文档的建议使用Python 2.7,他们会将您重定向到Older high-level API部分.
从那里您会发现可以使用check_output
result = subprocess.check_output(["sudo rfcomm connect /dev/rfcomm0 XX:XX:XX:XX:XX:XX 1"])
注意,如果您想捕获错误,也请使用stderr = subprocess.STDOUT标志.
result = subprocess.check_output("sudo rfcomm connect /dev/rfcomm0 XX:XX:XX:XX:XX:XX 1", stderr=subprocess.STDOUT, shell=True)
最后,有一个重要的事情你不应该知道,
By default, this function will return the data as encoded bytes. The actual encoding of the output data may depend on the command being invoked, so the decoding to text will often need to be handled at the application level.
编辑
由于您的目标似乎在??运行时获得输出.看一下这个answer.我更喜欢链接而不是重新发明轮子.
内容总结
以上是互联网集市为您收集整理的如何将rfcomm shell命令的结果放入python中的变量中?全部内容,希望文章能够帮你解决如何将rfcomm shell命令的结果放入python中的变量中?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。