从文本文件写入CSV文件

时间:2017-07-25 14:22:38

标签: 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

一切似乎都是正确的,代码运行但没有任何内容写入我的文本文件。怎么可能出错?

1 个答案:

答案 0 :(得分:2)

你的主要问题在于:

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)

此外,使用空白except是一个非常非常糟糕的主意。如果您正在寻找捕获特定异常,请在except子句中定义它。