python - 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 操作。
我认为“沟通”正在关闭管道。
解决方案
推荐阅读
- react-native - 如何更改同一组件中的标题导航?
- azure - 如何在 Azure 容器实例中设置自定义域名
- ios - tableView 单元格内的多个 collectionView 单元格在滚动时更改设计
- html - 在您的 css HTML CSS 中选择某个项目
- javascript - 在没有组件的 Vue 插件中捆绑样式
- c# - 使用 DataMovement 库将文件从 Azure Blob 复制到 ADLS 文件系统
- mongodb - 猫鼬查询不显示子文档
- php - 如何防止代码显示在页面顶部
- ads - 带有 JS 代码 + DFP/Google Ad Manager 的空广告问题
- xamarin - 具有 dagger 依赖项的 Xamarin 绑定库