这是我的python脚本,它给了我这样一个异常
IndexError: index out of range: 202252
如果我把90万换成更小的,效果会很好。函数randint
使用了很多更大的数字,而这不是抛出异常的地方,异常被抛出在for q in range(long(fromline),long(fromline)+500L):
这一行,我想我在长整型转换或某种数据类型溢出方面有一些问题。在
编辑
#read the lines from file
f = open("asd.txt")
lines = f.readlines()
f.close()
# print "if I uncoment this, then exception is thrown" +str(len(lines))
如果我这么做
打印行[1] 打印线[100000] ... 在
它很好用,我真的很困惑,我从来没有见过类似的问题
编辑
我发现我的问题到底是什么,请看我的答案
使用以下方法会更安全,尽管可能不是那么正式:
你为什么不把这个列表切片,然后在这个切片上迭代呢?在
我还去掉了一些不必要的类型转换(假设所有的行实际上已经是字符串)。注意,Python会在数据太大而不能成为整数时将其转换为long,因此您很少需要自己将数字转换为long。在
顺便说一句,您原始代码中的错误是,您选择了一个随机行,而该随机行位于最后一行的500行之内,当您尝试遍历列表的末尾时,您得到一个
IndexError
。在python中没有整数溢出。也许你的列表不够大,无法在202252索引处访问。检查
lines
的长度。在相关问题 更多 >
编程相关推荐