【发布时间】:2018-02-12 09:30:13
【问题描述】:
我有一个命令,我将其输出写入文件并使用subprocess.Popen 调用该命令。这是一个示例:
stdout_output = open('testfile.txt','w')
process = subprocess.Popen(command,stdout=stdout_output,shell=True)
stdout_read = open('testfile.txt','r')
data = stdout_read.read()
print data
数据有时没有任何内容,但是当我在触发进程和读取它之间添加一些睡眠时,例如
stdout_output = open('testfile.txt','w')
process = subprocess.Popen(command,stdout=stdout_output,shell=True)
time.sleep(3)
stdout_read = open('testfile.txt','r')
data = stdout_read.read()
print data
然后数据包含写入文件中的实际数据。有什么我在这里想念的吗?或者有没有其他方法可以在触发进程和读取输出之间增加一些时间,而不是给硬编码的睡眠。
注意 - 该命令是一个持续的过程。我无法添加process.wait() 或无法等待进程完成后再读取文件。
【问题讨论】:
-
你不能使用循环逐行阅读吗?
标签: python linux parallel-processing subprocess pipe