【发布时间】:2018-04-30 20:48:52
【问题描述】:
我试图在下面的代码中运行,但它只是在最里面的循环中循环然后停止,我不明白为什么它不继续到外部循环?
#!/usr/bin/python3
import os
import sys
import subprocess
p1 = subprocess.Popen([find...],stdout=subprocess.PIPE)
for i in range(...):
p2 = subprocess.Popen([grep...],stdin=p1.stdout,stdout=subprocess.PIPE)
for e in range(...):
p3=subprocess.Popen([grep...],stdin=p2.stdout,stdout=subprocess.PIPE)
for file in p3.stdout:
print(str(i)+str(e)+str(file))
【问题讨论】:
-
停止?还是块?
-
你应该最后打电话给
p3.wait()(其他人也一样) -
在第一个元素
e in range(...)之后停止,p3.wait()不起作用! -
在这个三重循环中存在一个概念问题:第一个 p2 grep 进程消耗了 find 的所有输出。我会创建一个要 grep 的文件列表,然后是 grep。这可以使用纯python编写。
标签: python python-3.x for-loop nested subprocess