我试图从CSV文件中提取一堆行并将它们写入另一个文件,但我遇到了一些问题。
import csv
f = open("my_csv_file.csv", "r")
r = csv.DictReader(f, delimiter=',')
fieldnames = r.fieldnames
target = open("united.csv", 'w')
w = csv.DictWriter(united, fieldnames=fieldnames)
while True:
try:
row = r.next()
if r.line_num <= 2: #first two rows don't matter
continue
else:
w.writerow(row)
except StopIteration:
break
f.close()
target.close()
运行此命令时,出现以下错误:
Traceback (most recent call last):
File "unify.py", line 16, in <module>
w.writerow(row)
File "C:\Program Files\Python25\lib\csv.py", line 12
return self.writer.writerow(self._dict_to_list(row
File "C:\Program Files\Python25\lib\csv.py", line 12
if k not in self.fieldnames:
TypeError: argument of type 'NoneType' is not iterable
不完全确定我做错了什么。
至于例外情况,如下所示:
应该是
要清除关于错误的混淆:您得到它是因为
r.fieldnames
只在第一次使用r
从输入文件读取时设置。因此,您编写它的方式,fieldnames
将始终初始化为None
。只有在从
r
中读取第一行之后,才能使用r.fieldnames
初始化w = csv.DictWriter(united, fieldnames=fieldnames)
,这意味着您必须重新构造代码。此行为记录在Python Standard Library documentation
我也不知道,但是既然你所做的只是将一个文件中的行复制到另一个文件中,那你为什么还要为那些
csv
的东西而烦恼呢?为什么不说:相关问题 更多 >
编程相关推荐