我在一个包含非常大字段的 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 文件?跳过具有大字段的行不是一种选择,因为需要在后续步骤中分析数据。
csv 文件可能包含非常大的字段,因此增加field_size_limit:
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 )
sys.maxsize
sys.maxint
正如 Geoff 指出的那样,上面的代码可能会导致以下错误:OverflowError: Python int too large to convert to C long. 为了避免这种情况,您可以使用以下 快速而肮脏 的代码(它应该适用于每个使用 Python 2 和 Python 3 的系统):
OverflowError: Python int too large to convert to C long
import sys import csv maxInt = sys.maxsize while True: # decrease the maxInt value by factor 10 # as long as the OverflowError occurs. try: csv.field_size_limit(maxInt) break except OverflowError: maxInt = int(maxInt/10)