我正在尝试编写包含字符串的所有行:来自一堆文本文件。这是我的代码:
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 :(得分:2)
你的主要问题在于:
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
子句中定义它。