从文本文件写入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
一切似乎是正确的,并且代码运行但没有写入我的文本文件。可能会出现什么问题?
答
你的主要问题是在线路:
row.insert(0, os.path.basename(filename))
try:
if keyword in row[0]:
csv_output.writerow(row)
except:
continue
你基本上将当前文件作为行的第一个条目的父文件夹的名称,然后在第二天你行检查该条目(row[0]
)是否包含您的keyword
。除非父文件夹包含您的keyword
(2012-07-02
),否则该条件永远不会评估为True
。
if keyword in row[0]:
csv_output.writerow([os.path.basename(filename)] + row)
此外,使用空白except
是一个非常,非常糟糕的主意:我要为这个混合起来。如果您想要捕获特定的例外情况,请在您的except
条款中进行定义。
修复您的缩进。 –
您是否尝试在writerow()调用旁边添加跟踪来查看它是否至少到达那里? 如果你想要更多的帮助,你应该确实修复你的缩进,然后提供小例子文件,这样我们就可以看到你想要实现的目标 –