首页 > 解决方案 > Python子进程 - 与另一个脚本的双向交互

问题描述

我正在尝试开发一个调用和执行 csh 脚本的 python 脚本。此时我可以执行 csh 脚本,但我在写入它时遇到了一些问题。

Python 需要从 csh 读取标准输出,然后在某些时候将信息放入 csh 的标准输入。例如,此时 python 启动 csh 脚本,然后 csh 要求输入密码。我可以将它发送到 csh 但在此 python 给出错误之后。

with Popen(["script_name", param1, param2], stdout=PIPE, stdin=PIPE, stderr=PIPE, bufsize=1, universal_newlines=True) as p:

for line in p.stdout:
    print(line, end='')
    if "password" in line:

       #p.stdin.write("xpto")
       stdoutMsg = p.communicate("xpto")[0]

我尝试使用 p.stdin.write 发送密码,但执行永远不会结束。使用“通信”,我可以发送密码,但是当代码尝试获取脚本的响应时,它会给出错误:

p.stdout 中行的 Tkinter 回调 (...) 中的异常:ValueError:对已关闭文件的 I/O 操作。

我认为“沟通”正在关闭管道。

标签: pythonpython-3.xsubprocess

解决方案


推荐阅读