【发布时间】:2011-12-30 07:31:48
【问题描述】:
我有一个从标准输入获取输入的 python 程序。现在,我必须编写另一个程序并将其作为子进程调用,这样每次我启动这个子进程时,它都应该从另一个文本文件中读取数据并将其写入标准输入,然后我的主程序从标准输入中读取并使用它。
out.py:
from subprocess import Popen, PIPE, STDOUT
import os
import sys
def read():
p = Popen(['python', 'in.py'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
out = p.communicate()
print out[0]
def main():
read()
if __name__ == "__main__":
main()
in.py:
import sys,os
import subprocess
def main():
f = open("ad.txt","r")
for line in f:
print line
if __name__ == "__main__":
main()
基本上我的问题是in.py 读取整个文件并打印到我不想要的 STDOUT 中,而是应该传达一个字符一次。如果ad.txt 是这样的:
asdfgh
我应该得到"a",然后是"s",然后是"d",然后是"f" .. 等等.. 每次我调用函数时一个接一个地读取文件中的下一个字符。就是这样!呸!!请帮助我,我有很多工作要做!在此先感谢:D
【问题讨论】:
-
为什么不让一个程序完成所有工作?您仍然可以将其拆分为多个文件。你知道 Python 中的模块是如何工作的吗?
-
告诉我们你到目前为止做了什么。
-
@KarlKnechtel :我正在编写一个虚拟机,所以我不应该这样做。我的意思是虚拟机规范就像我上面所说的应该使用另一个程序来完成它!跨度>
-
你不能写信给
stdin。为什么不改用pipes?