python 限制必须是整数
Posted
技术标签:
【中文标题】python 限制必须是整数【英文标题】:python limit must be integer 【发布时间】:2013-09-18 21:29:17 【问题描述】:我正在尝试运行以下代码,但由于某种原因,我收到以下错误:“TypeError:limit must be an integer”。
读取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 读取语句上方添加了额外的位,因为文件太大而无法正常读取。或者,我可以将文件从 csv 更改为文本文件,但我不确定这是否会进一步损坏数据我实际上无法看到任何数据,因为文件大于 2GB,因此打开成本很高。
有什么想法吗?我对 Python 还很陌生,但我真的很想了解更多。
【问题讨论】:
无法复制。代码在这里编译并且没有返回错误。 我打电话给csv.field_size_limit(sys.maxsize)
没有问题
这发生在什么操作系统上?
Windows 7。使用名为“Enthought Canopy”的 Python IDE,其中包含一堆软件包。目前, csv.field_size_limit(maxInt) 标记前面提到的限制错误,即使我自己运行它也是如此。有没有办法检查当前安装是否正确?
【参考方案1】:
我不确定这是否可以作为答案,但这里有几件事:
首先,csv 阅读器会自动缓冲 CSV 的每一行,因此文件大小应该没有太大关系,2KB 或 2GB 等等。
可能重要的是字段本身内的列数或数据量。如果此 CSV 在每一列中都包含战争与和平,那么是的,您在阅读它时会遇到问题。
一些潜在的调试方法是运行print sys.maxsize
,然后打开一个python 解释器import sys, csv
,然后运行csv.field_size_limit(sys.maxsize)
。如果您得到一些非常小的数字或异常,则您可能安装了错误的 Python。否则,请尝试使用更简单的文件版本。也许是第一行,或者前几行,只有 1 列。看看您是否可以重现尽可能小的情况并消除系统和文件大小的可变性。
【讨论】:
+1。我会说这是一个很好的答案,因为这个错误是不可重现的。 嗨乔丹,谢谢你的帮助。我得到以下代码的异常。 import csv csv.field_size_limit(sys.maxsize) 除了安装损坏之外,是否还有其他原因导致上述返回相同类型的错误? @Blackholify,你的例外是什么,在哪一行,你的 sys.maxsize 的值是多少?【参考方案2】:在带有 Python 2.6 的 Windows 7 64 位上,maxInt = sys.maxsize 返回 9223372036854775807L,从而导致 TypeError:调用 csv.field_size_limit(maxInt) 时限制必须是整数。有趣的是,使用 maxInt = int(sys.maxsize) 不会改变这一点。一个粗略的解决方法是简单地使用 csv.field_size_limit(2147483647) 这当然会在其他平台上引起问题。在我的情况下,这很适合识别 CSV 中的损坏值,修复其他应用程序中的导出选项并消除对 csv.field_size_limit() 的需要。
-- 最初由用户 roskakori 在此相关 question 上发布
【讨论】:
以上是关于python 限制必须是整数的主要内容,如果未能解决你的问题,请参考以下文章
用c语言实现大整形运算,64位长整型的加减法,输入限制为64位长度整数
Python:TypeError:字符串索引必须是整数[关闭]