首页 > 解决方案 > 如何将同时运行的 python 程序的输出和输入重定向到 __main__ python 程序

问题描述

这个问题可能看起来有点晦涩,对此我深表歉意。我知道这里通常需要更精确的问题,所以我已尽力为您提供您可能需要的所有信息。

并非完全必要的信息

我有一个正在处理的项目,下一步是创建一个交互式 python CLI。简而言之,我希望能够操纵命令行的外观和功能。命令行本质上将分为 2 部分,顶部和底部。

顶部将用于显示有关主要 python 进程和其他任何事情的信息。底部将用于接受用户输入和回显输出,并充当普通 cmd

主要问题

我遇到的问题是当用户想要运行外部程序(例如 .exe、.bat 或 .py 文件)时,我想将辅助进程的输出重定向到临时文件。然后主进程将从临时文件中读取,对其进行格式化并将其打印到 cmd 的下半部分。

我还想在辅助进程请求输入时获取用户输入,并将其重定向到另一个临时 input.txt 文件以供辅助进程读取。

到目前为止,我已经尝试使用 subprocess 包来处理调用外部程序这样 -> a.exe < input.txt > output.txt,但是我找不到任何具体的方法来做到这一点。尤其是当辅助进程请求时,仅将用户输入从进程 1 传送到进程 2。我不确定这两个进程是否有任何这样的方式可以相互交谈。

在这一点上,我真的没有太多代码,除了像这样的一个小片段,它没有做它应该做的事情。我什至没有让事情的输入端工作,因为我只是不知道从哪里开始。

import subprocess

# Open the output file
outf = open('output.txt', 'w+')

# Create a call to another python script
subprocess.run(['python', 'test.py'], stdout=outf)

line = outf.readlines()
print(f'>> {line}')

我期待这个

>> <test.py output>

但我什么也得不到。

我想要完成的示例图

因为我还不能发布图片,你可以在这里找到我的设计计划-> https://imgur.com/a/eh1Z0vE

只是为了澄清

我不是要求有人为我编写代码或类似的东西,我只是在问是否有人能指出我正确的方向——也许是一个已经做过类似事情的项目,一个显示类似内容的博客。

任何事情都会有帮助,谢谢。

标签: python-3.xcmdpipecommand-line-interfacestdout

解决方案


推荐阅读