提问人:Isabella Brooks 提问时间:8/8/2023 最后编辑:Isabella Brooks 更新时间:8/9/2023 访问量:27
通过管道传输 Python 子进程中的用户输入和用户输出?
Piping user input and user output from a Python subprocess?
问:
我正在编写一个 python 程序来运行另一个 python 程序,并将其输入和输出通过管道传输到不同的日志文件中。
我尝试创建这个,但它似乎过早地关闭了文件:
import subprocess
import shlex
def main():
program_filename = "calculator.py"
input_log_filename = "user_input.log"
output_log_filename = "program_output.log"
with open(input_log_filename, "w") as input_log, open(output_log_filename, "w") as output_log:
print("Calculator program is running.")
command = f"python3 {program_filename}"
process = subprocess.Popen(shlex.split(command), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1)
while True:
program_output, _ = process.communicate(timeout=1)
if program_output:
output_log.write(program_output)
print("Program Output:", program_output.strip())
user_input = input("Enter input: ")
if user_input.lower() == "exit":
break
input_log.write(user_input + "\n")
process_input = user_input + "\n"
process.stdin.write(process_input)
process.stdin.flush()
process.stdin.close()
process.stdout.close()
process.stderr.close()
if __name__ == "__main__":
main()
答: 暂无答案
评论
calculator.py