我需要在进程中调用交互式程序并在进程运行时打印其输出。到目前为止,我正在使用此功能:
def call(command):
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while True:
line = process.stdout.readline().rstrip().encode("utf-8")
if line == '':
break
print(line)
process.wait()
return process.returncode
问题是,交互式程序可能会等待用户输入并且不会在问题后添加新行,例如:
认证领域:...> ...
用户名:
在“用户名:”之后,没有新行并且程序需要用户输入,所以我的代码没有显示“用户名:”。
除了 readline(),我需要一些函数,比如 bytesavailable 和 read(size),但是没有 bytesavaiable() 这样的函数。