首先我想说,我是这个网站的新手,任何批评都是值得赞赏的。
我想修改一个Python脚本来读取一个rfid键,然后pipevariablesUID到一个脚本(bash),将validation它等到目前为止,我设法隔离的UID,我可以打印它在Python中,但我可以不要把它放在bash脚本中。
print "" + str(uid[0]) + "" + str(uid[1]) + ""+ str(uid[2]) + "" + str(uid[3])
这里是我用来打印uid的string,我怎样才能把它传给bash脚本? 谢谢!
使用子流程模块:
import subprocess uid = str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3]) result = subprocess.run(['check.sh', uid], stdout=subprocess.PIPE) print(result.stdout)
如果你使用3.5以前的python版本,而不是run
你必须使用call
。
为了这个工作,bash程序必须接受uid作为命令行参数。 如果您需要将字符串传递给bash脚本,则需要做更多的工作:
import subprocess import io import tempfile uid = str(uid[0]) + str(uid[1]) + str(uid[2]) + str(uid[3]) f = tempfile.TemporaryFile(mode='w+t') f.write(uid) f.seek(0) result = subprocess.run(['check.sh', uid], stdin=f, stdout=subprocess.PIPE) f.close() print(result.stdout)
阅读https://docs.python.org/3/library/subprocess.html获取更多见解。
界面已经改变了一点,所以要注意你的Python版本。 2.x的工作方式不同于3.4,而不是3.5。 虽然有兼容的方法。