我试图运行以下代码但由于某种原因我得到以下错误:"TypeError:limit必须是一个整数".
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)
Run Code Online (Sandbox Code Playgroud)
该错误发生在已加星标的行中.我只在csv read语句上面添加了额外的位,因为文件太大而无法正常读取.或者,我可以将文件从csv更改为文本文件,但我不确定这是否会进一步损坏数据我实际上看不到任何数据,因为文件大于2GB,因此打开成本很高.
有任何想法吗?我是Python的新手,但我真的很想学到更多东西.
我不确定这是否符合答案,但这里有一些事情:
首先,csv 读取器会自动缓冲 CSV 的每行,因此文件大小应该不会太重要,2KB 或 2GB 都可以。
重要的是字段本身的列数或数据量。如果此 CSV 每列中都包含“战争与和平”,那么您在阅读它时将会遇到问题。
一些可能进行调试的方法是运行print sys.maxsize,然后打开 python 解释器,import sys, csv然后运行csv.field_size_limit(sys.maxsize)。如果您收到一些非常小的数字或异常,则可能是 Python 安装错误。否则,请尝试使用文件的更简单版本。可能是第一行,或者前几行和一列。看看您是否可以重现尽可能小的情况并消除系统和文件大小的可变性。
| 归档时间: |
|
| 查看次数: |
2008 次 |
| 最近记录: |