我编写了一个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”,但其余部分消失了。
答案 0 :(得分:4)
您需要将sys.stdin
与stdin
电话联系起来。
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程序。