【问题标题】:How can I get user input from main process when using subprocess in Python在 Python 中使用子进程时如何从主进程获取用户输入
【发布时间】:2013-04-09 14:59:23
【问题描述】:

例如program1.py调用program2.py:

program1.py

subprocess.Popen("program2.py", stdin=subprocess.PIPE).communicate()

program2.py

user_input = input("Yes or No?")

但是当我运行 program1 时,在我的情况下,program2 无法从主进程获取用户输入。它说“阅读一行时EOF”。您能给我一些建议以获取用户输入吗?

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    您没有将任何数据传递给program2.py。我假设您使用的是 Python 3,从使用 input(而不是 Python 2 中的 raw_input)开始。以下是我的做法:

    import subprocess
    import sys
    
    cmd = [sys.executable, 'program2.py'] 
    proc = subprocess.Popen(cmd, stdin=subprocess.PIPE)
    proc.communicate('Y'.encode())
    

    将“Y”传递给第二个程序。 encode() 在 Python 3 中是必需的,但不是 Python 2。这是因为 Python 3 字符串是多字节的,而 stdin 流使用单字节字符串,就像 Python 2 字符串一样。 program2.py 结尾处无需更改。

    【讨论】:

    • 谢谢!但我想获得用户输入。而且,可能有不止一个用户输入。
    • 好吧,也许我理解错了。您是说要将数据从 program1 传递到 program2,还是从 program2 传递到 program1?我已经向您展示了如何从 program1 获取数据到 program2,因为反过来,program2 必须以某种方式传输它。
    猜你喜欢
    • 2022-06-19
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2012-11-29
    • 2013-08-18
    • 2020-03-03
    • 1970-01-01
    • 2015-06-08
    相关资源
    最近更新 更多