使用CSV,itertools和operator来抓取目录并切片csv文件时出错

时间:2016-07-22 18:11:58

标签: python

我收到错误:fieldnames = csv_readers.fieldnames AttributeError:'list'对象没有属性'fieldnames'

所以我注释掉了这条线,再次运行。

新错误:sorted_csv_contents =已排序(csv_contents,key = op.itemgetter(0)) AttributeError:DictReader实例没有属性“ getitem

代码的用途:按列值对csv文件进行切片,将每个唯一实例及其重复项分组到一个新文件中。所有这些都是在不必每次都输入实际文件路径的情况下完成的。

from os import listdir
import csv
import itertools as it, operator as op

# Get the list of all files/directories in current path
all_files = listdir('.')

# Filter out only the .csv files
csv_files = [file for file in all_files if file.endswith('.csv')]

print csv_files

# Create file objects and csv objects for each CSV
csv_contents =[]
file_objects = [open(file) for file in csv_files]
csv_readers = [csv.DictReader(csvfile) for csvfile in file_objects]
fieldnames = csv_readers.fieldnames
for line in csv_readers:
csv_contents.append(line)

sorted_csv_contents = sorted(csv_contents, key = op.itemgetter(0))

for groupkey, groupdata in it.groupby(sorted_csv_contents,     key=op.itemgetter(0)):
with open('slice_{:s}.csv'.format(groupkey), 'wb') as fou:
    dict_writer = csv.DictWriter(fou, fieldnames=fieldnames)
    dict_writer.writeheader()
    dict_writer.writerows(groupdata)

for file in file_objects:
file.close()

0 个答案:

没有答案