【发布时间】:2016-04-15 09:36:39
【问题描述】:
我有以下 Python 代码:
import os
import csv
import sys
g = open('Consolidated.csv', "wb")
for root, dirs, files in os.walk('D:\\XXX\\YYY\\S1'):
for filename in files:
pathname = os.path.join(root, filename)
symbol = filename.rpartition('_')[-1].rpartition('.')[0]
reader = csv.reader(open(pathname, 'rU'))
writer = csv.writer(g, delimiter='\t', quotechar='"', quoting=csv.QUOTE_ALL)
for row in reader:
row.insert(0, symbol.upper())
if len(row[2]) == 3:
row[2] = '0'+row[2]
writer.writerow(row)
基本思想是我在 S1 中有几个 CSV 文件,我需要将它们合并到一个大的 CSV 文件中。这些文件以一种有趣的方式命名,这导致了代码中的 rpartition 和 row 操作。
此代码运行良好,但我的问题如下:如何检查 CSV 文件每行中的列数?示例:如果输入 CSV 文件采用以下格式,预计有五列:1,2,3,4,5,代码将显示“1”“2”“3”“4”“5”(由制表符分隔)在合并文件中。现在让我们假设 CSV 文件中的一行条目是什么原因:6、7、8。所以它突然停止,没有填写所有列。在这种情况下,我希望代码忽略这一行,而不是在合并中产生“6”“7”“8”。
有人可以提供有关如何执行此操作的代码吗?对于输入 CSV 中的每一行,我想在操作之前检查它是否是一整行。
任何帮助将不胜感激。
热烈的问候。
【问题讨论】:
标签: python performance csv export-to-csv