我有一个 python 子进程,它 greps 文件中的字符并将结果输出到 csv 文件。我想在我的子进程中对列表中的每个项目执行相同的 grep,然后将结果输出到 csv 文件,将结果附加到先前的结果中。我有以下代码:
list = ['ABCD', 'EFGH', 'IJKL', 'MNOP', 'QRST']
with open('output.csv','w') as out:
out.writelines(
for x in list:
cat = subprocess.Popen(['cat', 'LogFile_20130410.msg.log'],
stdout=subprocess.PIPE,)
grep = subprocess.Popen(['grep', x],
stdin=cat.stdout,
stdout=subprocess.PIPE,)
awk = subprocess.Popen(['awk', '{print $14,$10,$5,$7}'],
stdin=grep.stdout,
stdout=subprocess.PIPE,)
sort = subprocess.Popen(['sort', '-t ', '-k4', '-n', '-r'],
stdin=awk.stdout,
stdout=subprocess.PIPE,)
head = subprocess.Popen(['head', '-10'],
stdin=sort.stdout,
stdout=open('output.csv', 'w'),)
)
我认为我的子进程正在运行,但我的输出文件只包含列表中的最后一项。我想我正在覆盖我的数据。这是我的问题还是我的 for 语句错误?如果我的 for 语句是正确的,我如何写入 output.csv 文件而不覆盖?还有一种方法可以将我的输出写入单独的列吗?
我的输出如下所示:
QRST 39h0gcro 确认 83ms
这些字段中的每一个都应位于单独的列中。