我试图运行以下代码但由于某种原因我得到以下错误:“TypeError:limit必须是一个整数”.
读取csv数据文件
import sys
import csv
maxInt = sys.maxsize
decrement = True
while decrement:
decrement = False
try:
**csv.field_size_limit(maxInt)**
except OverflowError:
maxInt = int(maxInt/10)
decrement = True
with open("Data.csv",'rb') as textfile:
text = csv.reader(textfile,delimiter=" ",quotechar='|')
for line in text:
print ' '.join(line)
该错误发生在已加星标的行中.我只在csv read语句上面添加了额外的位,因为文件太大而无法正常读取.或者,我可以将文件从csv更改为文本文件,但我不确定这是否会进一步损坏数据我实际上看不到任何数据,因为文件大于2GB,因此打开成本很高.
有任何想法吗?我是Python的新手,但我真的很想学到更多东西.
最佳答案
我不确定这是否有资格作为答案,但这里有几点:
首先,csv阅读器自动缓冲CSV的每一行,因此文件大小无关紧要,2KB或2GB,无论如何.
可能重要的是字段本身内的列数或数据量.如果这个CSV在每一栏都包含战争与和平,那么是的,你将会遇到一个问题.
一些可能的调试方法是运行print sys.maxsize,然后打开python解释器,导入sys,csv,然后运行csv.field_size_limit(sys.maxsize).如果你得到一些非常小的数字或异常,你可能安装了一个糟糕的Python.否则,请尝试使用更简单的文件版本.也许第一行,或前几行,只有1列.看看您是否可以重现尽可能小的情况并消除系统和文件大小的可变性.