_csv.Error:字段大于字段限制(131072)
我有一个脚本阅读的CSV文件非常大的领域:
# example from http://docs.python.org/3.3/library/csv.html?highlight=csv%20dictreader#examples import csv with open('some.csv', newline='') as f: reader = csv.reader(f) for row in reader: print(row) 但是,这会在某些csv文件上引发以下错误:
 _csv.Error: field larger than field limit (131072) 
	
  csv文件可能包含非常大的字段,因此增加field_size_limit : 
 import sys import csv csv.field_size_limit(sys.maxsize) 
  sys.maxsize适用于Python 2.x和3.x.  sys.maxint只能用于Python 2.x( SO:what-is-sys-maxint-in-python-3 ) 
更新
 正如Geoff指出的那样,上面的代码可能会导致以下错误: OverflowError: Python int too large to convert to C long 。 为了规避这一点,你可以使用下面的快速和脏的代码: 
 import sys import csv maxInt = sys.maxsize decrement = True while decrement: # decrease the maxInt value by factor 10 # as long as the OverflowError occurs. decrement = False try: csv.field_size_limit(maxInt) except OverflowError: maxInt = int(maxInt/10) decrement = True 
这可能是因为您的CSV文件已embedded单引号或双引号。 如果您的CSV文件是制表符分隔,请尝试打开它:
 c = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE) 
对于Python 3.4,我发现这个代码,它适用于我:
 csv.field_size_limit(500 * 1024 * 1024) 
有时候,一行包含双引号列。 当csv阅读器尝试阅读这一行时,不理解列的尾部并且引发这个提升。 解决scheme如下:
 reader = csv.reader(cf, quoting=csv.QUOTE_MINIMAL)