首先,我想说我是这个网站的新手,任何批评都表示赞赏。
我正在尝试修改Python脚本以读取rfid密钥,然后将变量UID传递给将对其进行身份验证等的脚本(bash)。到目前为止,我已设法隔离UID,我可以在python中打印它但我无法在bash脚本中获取它。
print "" + str(uid[0]) + "" + str(uid[1]) + ""+ str(uid[2]) + "" + str(uid[3])
这是我用来打印uid的字符串,如何将其传递给bash脚本?谢谢!
答案 0 :(得分:1)
使用子流程模块:
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)
阅读laravel/laravel#3699以获取更多见解。
接口已经改变了一点,所以要注意你的Python版本。 2.x的工作方式不同于3.4而不是3.5。虽然有兼容的方式。