python如何在循环中写入csv文件

2024-04-26 23:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码可以循环:

for i in os.listdir(os.getcwd()):
   if i.endswith(".gz"):
        myfilename=i
        getHum=int(subprocess.check_output('''zcat %s |  awk 'BEGIN {FS=";"};{print $6}' | grep -i 'hummer' | wc -l''' % myfilename, shell=True))
        getBMW=int(subprocess.check_output('''zcat %s |  awk 'BEGIN {FS=";"};{print $6}' | grep -i 'bmw' | wc -l''' % myfilename, shell=True))
        getAudi=int(subprocess.check_output('''zcat %s |  awk 'BEGIN {FS=";"};{print $6}' | grep -i 'audi' | wc -l''' % myfilename, shell=True))

现在,我正在尝试修改它,以便将输出写入逗号sep csv文件。 如何循环遍历每个文件并将提取的内容写入csv文件?谢谢。你知道吗


Tags: 文件trueoutputcheckshellfsgrepint
1条回答
网友
1楼 · 发布于 2024-04-26 23:34:31

我想这样的事情可以满足你的要求:

def get_brand_count(filename, brand):
    return int(subprocess.check_output('''zcat %s |  '''
                                       '''awk 'BEGIN {FS=";"};{print $6}' | '''
                                       '''grep -i %r | wc -l''' %
                                       (filename, brand), shell=True))

brands = 'hummer', 'bmw', 'audi'
with open('results.csv', 'wb') as csvfile:
    csvwriter = csv.writer(csvfile)
    csvwriter.writerow(brands)  # csv header row (if desired)
    for myfilename in glob.iglob('*.gz'):
        csvwriter.writerow([get_brand_count(myfilename, brand)
                                for brand in brands])

相关问题 更多 >