如何让Python程序处理多行文档?
我写了一个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
有没有办法让这个子进程启动后,能够正确处理这里文档的内容呢?也就是说,"y"这个输入能被Python的input()接收,而"file1"和"file2"则继续作为标准输入传给someprogram?现在的情况是,Python的input()接收了"y",但是后面的内容就消失了。
3 个回答
0
我之前用过类似的东西几次: https://gist.github.com/887225
简单来说,这是一段Python脚本,它可以接受一些命令行参数,根据输入的内容进行一些处理,然后使用os.system()来执行一个命令行指令。在这个例子中,我调用了Java,传入了一个类路径,然后运行了ProgramName.jar这个程序。
1
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。这种情况下,向其他人请教或者查找资料就显得特别重要。StackOverflow就是一个很好的平台,大家可以在这里提问和回答问题,互相帮助。
当你在StackOverflow上看到一个问题时,通常会有很多人给出不同的答案。这些答案可能会涉及到各种技术细节,但最重要的是要找到适合自己理解的解释。有些回答可能会用到一些专业术语,这时候可以尝试去查一下这些词的意思,或者看看有没有更简单的说法。
总之,编程是一门需要不断学习和实践的技能,遇到问题时不要气馁,积极寻求帮助,慢慢你就会变得越来越熟练。
import sys
status=subprocess.call(["someprogram"], stdin=sys.stdin)
4
你需要把 sys.stdin
连接到调用的 stdin
。
status=subprocess.call(["someprogram"], stdin=sys.stdin)