【发布时间】:2016-04-29 16:28:31
【问题描述】:
我有两个脚本,一个控制另一个并通过标准输入与它通信。父脚本:
import subprocess
import time
p = subprocess.Popen(['python','read_from_stdin.py'], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
for i in range(0,10):
p.stdin.write(str(i))
p.stdin.write('\r\n') # \n is not sufficient on Windows
p.stdin.flush()
print i
time.sleep(1)
p.stdin.close()
子脚本(称为“read_from_stdin.py”):
import sys
import datetime
with open(datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S') + '.txt','w') as f:
for line in sys.stdin:
f.write(datetime.datetime.now().isoformat() + ' ' + line)
在由子脚本创建的文件中,所有输入都具有相同的时间戳,尽管父脚本相隔一秒写入,并且尽管使用了 flush()。
【问题讨论】:
标签: python subprocess stdin popen