从文本文件写入CSV文件

问题描述:

我想写一个包含字符串的所有行:从一堆文本文件。这是我的代码:从文本文件写入CSV文件

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 

一切似乎是正确的,并且代码运行但没有写入我的文本文件。可能会出现什么问题?

+0

修复您的缩进。 –

+0

您是否尝试在writerow()调用旁边添加跟踪来查看它是否至少到达那里? 如果你想要更多的帮助,你应该确实修复你的缩进,然后提供小例子文件,这样我们就可以看到你想要实现的目标 –

你的主要问题是在线路:

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条款中进行定义。