与另一个进程的标准输入/输出交互

2023-12-11

我有一个可执行文件example.exe。该可执行文件的行为如下:

1.Waits for input from user
2.Performs some operations, based on input
3.goto 1

我该如何使用subprocess或与可执行文件交互的类似模块?

我希望运行该流程,插入输入,接收输出,然后根据收到的输出插入其他输入。


from subprocess import Popen, PIPE

process = Popen([r'path/to/process', 'arg1', 'arg2', 'arg3'], stdin=PIPE, stdout=PIPE)

to_program = "something to send to the program's stdin"
while process.poll() == None:  # While not terminated
    process.stdin.write(to_program)

    from_program = process.stdout.readline()  # Modify as needed to read custom amount of output
    if from_program == "something":  # send something new based on stdout
       to_program = "new thing to send to program"
    else:
       to_program = "other new thing to send to program"

print("Process exited with code {}".format(process.poll()))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与另一个进程的标准输入/输出交互 的相关文章

随机推荐

  • 平面文件目标列数据类型验证

    INT 类型的源数据库字段通过 OLE DB 源读取 它最终被写入平面文件目标 目标平面文件连接管理器 gt 高级页面将其报告为four byte signed integer DT I4 这种数据类型让我认为它表示二进制 显然 事实并非如
  • Xcode 4:自定义行为不执行我的 sh 脚本?

    我在 Xcode 4 中创建了一个自定义行为 Xcode gt 行为 gt 编辑行为 gt 以便启动 shell 脚本 配置为可执行 我可以使用菜单或自定义快捷方式调用该行为 控制台按指定显示 但脚本未执行 控制台中没有输出 该脚本已经在终
  • 使用 matlab 基于向量和对角线元素 = 1 的矩阵

    如何创建以下矩阵 1 0 0 0 0 k1 1 0 0 0 k2 k1 1 0 0 k3 k2 k1 1 0 k4 k3 k2 k1 1 Use TOEPLITZ E g vector 1 2 3 4 5 replace this with
  • Asp.Net Core:访问 AuthorizeHandler 中的自定义 AuthorizeAttribute 属性

    正如我正在努力的那样Asp Net core Authorization部分 我需要在AuthorizeAttribute我想将其用作额外的权限值 所以 我延长了AuthorizeAttribute在我自己的自定义授权属性中 见下文 pub
  • 在子 div 中滚动(固定)应该滚动父 div

    我有一个父母和一个孩子 子 div 绝对位于顶部并且可滚动 我的要求是当我在子div内滚动时滚动父div 并且滚动应该是相同的 即如果我在子div中滚动100px 那么外部div也应该滚动100px Jsfiddle HTML div cl
  • Openfire:离线 UTF-8 编码消息保存错误

    我们使用 Openfire 3 9 3 它的 MySql 数据库使用 utf8 persian ci 排序规则 在 openfire xml 中我们有
  • 什么可能导致“JAXBElement 没有无参数默认构造函数”?

    我正在生成一个 jar 它将被放入商业软件产品中 该 jar 符合商业软件的 api 并依赖于第二个 jar 其中包含 除其他外 一组从 XSD 生成的 POJO 但是 当我将 JAXBContext 放入时尝试实例化 JAXBContex
  • 删除了交互模块的功能。如何重新导入? importlib.reload 没有帮助

    我在 ipython 上删除了一个 包内置 函数 Python 3 6 4 Anaconda custom 64 bit default Jan 16 2018 10 22 32 MSC v 1900 64 bit AMD64 Type c
  • 循环遍历所有嵌套的字典值?

    我试图循环遍历字典并打印出值不是嵌套字典的所有键值对 如果该值是字典 我想进入它并打印出它的键值对等 我试过这个 但它只适用于前两个级别 我需要它适用于任意数量的级别 for k v in d iteritems if type v is
  • 在 Ant 中,如何动态构建引用属性文件的属性?

    我正在使用输入任务来收集特定的属性值 并且我想将这些值连接到引用我的属性文件的一个属性值中 我可以生成属性的格式 但在运行时它被视为字符串而不是属性引用 属性文件示例 build properties Some Server Credent
  • 静态与成员变量

    为了调试 我想向我的类添加一些计数器变量 但如果不更改标头而导致大量重新编译 那就太好了 如果我正确理解了关键字 那么以下两个片段将完全相同 当然假设只有一个实例 class FooA public FooA count 0 FooA vo
  • 使用 SimpleXML 读取 RSS 提要

    我正在使用 PHP 和 simpleXML 来读取以下 rss 提要 http feeds bbci co uk news england rss xml 我可以像这样获得大部分我想要的信息 rss simplexml load file
  • 如何在 swift 2.0 (iOS) 的单例类中创建可全局访问的结构数据?

    我对 iOS 编程非常陌生 而且速度很快 我正在尝试创建一个单例类来存储我的全局数据 我的全局数据是一个结构体和该结构体的数组 我只想拥有这个类的一个实例 因此是一个单例类 全局数据应该可供所有 ViewController 访问和编辑 我
  • 如何以编程方式识别存储过程依赖项?

    是否可以编写 PL SQL 查询来识别存储过程依赖项的完整列表 我只对识别其他存储过程感兴趣 并且我也不希望限制它的嵌套深度 例如 如果 A 调用 B B 调用 C C 再调用 D 我希望将 B C 和 D 报告为 A 的依赖项 On 这一
  • Mongodb连接池(更改连接池的大小)

    如何更改mongo连接池大小 我看到默认是100 有没有办法改变这个值 我不想通过 spring 来做 有没有办法通过 MongoClient 配置它 我看到有一个关于 mongoClientOptions 的选项 但我没有看到设置连接池的
  • System.console() 返回 null

    我正在使用readLine of BufferedReader从用户那里获取输入 新密码 但想屏蔽密码 所以我尝试使用java io Console班级 问题是System console 回报null当在 Eclipse 中调试应用程序时
  • URI 中的 JWT 是一种不好的做法吗?

    我有一个存储在 Redis 中的令牌 JWT 黑名单 并且希望我的网站用户能够以 RESTful 方式将其令牌列入黑名单 我可以 建立路线 sessions
  • 如何评价插值的质量? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在建造一座图像金字塔 首先 我拍摄一张大图片 然后构建一张更小的图片 甚至更小 等等 我使用插值来缩小图像 我需要了解在什么插值下图像之间丢失的信息会更少 这就是我所说的插值质量 我正
  • 使用 Glide 从 URL 加载占位符以在加载 GIF 时显示 (Android)

    我所拥有的是这样的 Glide with this load imageUrl asGif diskCacheStrategy DiskCacheStrategy SOURCE placeholder R drawable gif into
  • 与另一个进程的标准输入/输出交互

    我有一个可执行文件example exe 该可执行文件的行为如下 1 Waits for input from user 2 Performs some operations based on input 3 goto 1 我该如何使用su