如何让Python程序处理这里的文档?

时间:2011-03-25 17:16:10

标签: python shell subprocess

我编写了一个Python包装器(pyprog)来运行一个程序(someprogram),如下所示:

...do some setup stuff in Python...
print("run [y=yes]")
CHOICE=input()
...do some setup stuff in Python...
if CHOICE == "y":
  status=subprocess.call(["someprogram"])
  sys.exit(status)

用户希望使用shell脚本来运行程序并使用以下文档提供输入:

#!/bin/sh
pyprog > pyprog.log << EOF
y
file1
file2
EOF

有没有办法生成子进程,以便here文档可以工作(“y”被Python输入()消耗,“file1”和“file2”继续作为stdin到某个程序)?现在,Python输入()接受“y”,但其余部分消失了。

3 个答案:

答案 0 :(得分:4)

您需要将sys.stdinstdin电话联系起来。

status=subprocess.call(["someprogram"], stdin=sys.stdin)

答案 1 :(得分:1)

import sys
status=subprocess.call(["someprogram"], stdin=sys.stdin)

答案 2 :(得分:0)

之前我曾经使用过类似的东西:https://gist.github.com/887225

基本上它是一个python脚本,接受许多命令行参数,根据输入执行一些转换,然后使用os.system()来唤起shell命令。  在这个例子中,我正在调用Java,传入类路径,然后运行ProgramName.jar程序。