【发布时间】:2020-11-08 14:13:17
【问题描述】:
对不起,我真的不是python人,但情况让我很受打击,这对你们python人来说是很明显的事情。
我正在尝试与衍生的控制台进程进行交互通信(在我们的用例中,它是一个控制台程序,它与旧的但仍然很好的 HP 仪器进行通信,用于测量实验中的一些物理变量)。
我在这里找到了一些有见地的例子:
Running interactive program from within python
但是当试图获得灵感时(我不想要那个计时器),我开始从头开始编写这个,使用通常存在于 windows 盒子上的 ftp.exe 程序进行测试,具有以下内容:
#!/usr/bin/python
import subprocess, sys
mystdout=sys.stdout
p = subprocess.Popen("ftp.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE) #, shell=True)
sys.stdout=p.stdin
print('bye\n'.encode())
sys.stdout=mystdout
print('done')
但是print('bye\n'.encode()) 的结果是:
print('bye\n'.encode())TypeError: a bytes-like object is required, not 'str'
我不能使用 subprocess 的 communicate() 方法,因为它似乎不是很有交互性(仅限一次性)。
请你给我一个提示,我的笨蛋在哪里?这台机器在 Windows 上运行 Python 3.6.1,但更友好的 3.7.3 的 Linux 机器给出了相同的问候。
【问题讨论】:
标签: python-3.x