【问题标题】:How to use STDIN from subprocess.Popen [duplicate]如何从 subprocess.Popen 使用 STDIN [重复]
【发布时间】:2016-09-29 16:35:04
【问题描述】:

我怎样才能实现类似的东西

$ echo "hello" | my_app

使用 Python 的子进程?

subprocess.Popen() 需要 STDIN 的管道或文件句柄。但我想通过变量为被调用程序提供标准输入。所以像

myinput = "hello"
subprocess.Popen("an_external_programm", stdin=myinput)
….

【问题讨论】:

  • 看看Popen.communicate()。链接:docs.python.org/3/library/…
  • 你能说清楚你的用例吗?首先,您看起来像是在向脚本传递“hello”,在第二个示例中,它是脚本中的一个变量。
  • 我想从我的 Python 脚本中调用一个外部工具,类似于 shell 示例,但内容——来自 shell sxample 的“hello”来自一个 Python 变量。
  • 实际上 Popen.communicate() 成功了

标签: python subprocess popen


【解决方案1】:

在名为 myscript.py 的 python 脚本中

import sys

for line in sys.stdin:
     print(line)

在 unix 中

echo '你好' |我的脚本.py

【讨论】:

    【解决方案2】:

    我能够通过使用Popen.communicate()解决我的问题

    所以某种伪代码:

    proc = subprocess.Popen(…)
    proc.communicate(input="my_input_via_stdin")
    

    【讨论】:

    • 省略号字符 (...) 掩盖了此答案中的解决方案 :-)
    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2015-08-10
    相关资源
    最近更新 更多