我如何通过以下代码返回通过main.py
启动的python子进程的值:
subprocess.check_output(['lxterminal -e python3 rfid_input.py'], stdin=subprocess.PIPE, shell=True, close_fds=True)
父进程:
import sys, subprocess
value = subprocess.check_output(['lxterminal -e python3 rfid_input.py'], stdin=subprocess.PIPE, shell=True, close_fds=True)
print(value)
子进程包含一个简单的x=input()
,如下所示:
import sys
x=input()
sys.stdout.write(x)
但是Ii仍然没有收到任何空的b''
。
[我也通过subprocess.Popen
,.wait()
和.communicate()
进行了尝试,但均未成功。
如果您还有其他想法如何获得lxterminal输入的值,请告诉我。
为了将数据传递到标准输入,您的设置通常看起来像这样
import subprocess
stdin = b"THE DATA YOU PASS"
terminal = subprocess.Popen(["lxterminal", "-e", "python3", "rfid_input.py"],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = terminal.communicate(stdin)
当不带参数调用.communicate
时,它通常传递空字节,这可能就是这里发生的情况。