从文本文件写入CSV文件

2024-04-19 17:00:08 发布

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

我试图从一堆文本文件中写入包含字符串的所有行。这是我的密码:

import os
import glob
import csv
import re

#Defining Keyword
keyword = '2012-07-02'

#Code to merge all relevant LOG files into one file and insert 
with open('Combined-01022012.txt' , 'w', newline = '') as combined_file:
    csv_output = csv.writer(combined_file)
    for filename in glob.glob('FAO_Agg_2012_Part_*.txt'):
        with open(filename, 'rt', newline = '') as f_input:
        #with gzip.open((filename.split('.')[0]) + '.gz', 'rt', newline='') as f_input:
            csv_input = csv.reader(f_input)
            for row in csv_input:
                row.insert(0, os.path.basename(filename))
                try:
                    if keyword in row[2]:
                        csv_output.writerow(row)
                #row.insert(0, os.path.basename(filename))
                #csv_output.writerow(row)
                except:
                    continue
            continue

一切似乎都是正确的,代码运行,但没有得到写在我的文本文件。会出什么问题


Tags: csvinimportinputoutputosaswith
1条回答
网友
1楼 · 发布于 2024-04-19 17:00:08

你的主要问题是:

row.insert(0, os.path.basename(filename))
try:
    if keyword in row[0]:
        csv_output.writerow(row)
except:
    continue

实际上,您正在插入当前文件的父文件夹名作为行的第一个条目,然后在下一行检查该条目(row[0])是否包含您的keyword。除非父文件夹包含您的keyword2012-07-02),否则该条件永远不会计算为True。我会把它混淆为:

if keyword in row[0]:
    csv_output.writerow([os.path.basename(filename)] + row)

而且,使用blankexcept是一个非常非常糟糕的主意。如果要捕获特定的异常,请在except子句中定义它

相关问题 更多 >