_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)