我正在尝试使用pexpect
库从另一个python程序执行一个python程序,但是我没有得到我所期望的行为。
我希望第一个程序(prog1.py
)的输出实时显示在第二个程序(prog2.py
)的终端上。使用child.after
,我得到的输出格式错误:所有\n
和\r
都打印在输出中,而不是正确地用作行尾。
child = pexpect.spawn('python3 /home/robb/Workspace/prog1.py')
child.expect(".*do:")
child.sendline(sys.argv[1])
print(child.after)
我在一行中获得所有输出:
b'Initializing database...\r\nDone initializing database!\r\n******************************\r\nProgram running\r\n******************************\r\n1. First Option\r\n2. Second Option\r\n\r\nPlease input number of action you want to do:'
而且,问题的答案(在这种情况下为sys.argv[1]
)甚至都没有出现。如何正确显示prog1
的输出?
使用print(child.before)
,我得到的输出甚至更糟,简单地是这样:
b''
[child.after
返回一个bytes
类型,而不是您期望的`str˙。
将输出转换为str
print(child.after.decode('utf8'))