read = open('700kLine.txt')
# use readline() to read the first line
line = read.readline()
aList = []
for line in read:
try:
num = int(line.strip())
aList.append(num)
except:
print ("Not a number in line " + line)
read.close()
print(aList)
该文件中有70万行(每行最多2位数字) 我只能在该文件中找到〜280k Line到我的aList中。
那么,如何将列表容量从280k扩展到700k或更多? (这种情况是否有其他解决方案?)
你好,我刚刚解决了这个问题。感谢您的所有帮助。那是一个明显的缓冲问题。 解决方法只是增加缓冲区的大小。
链接在这里 Increase output buffer when running or debugging in PyCharm
答案 0 :(得分:0)
请尝试这个。
filename = '700kLine.txt'
with open(filename) as f:
data = f.readlines()
print(data)
print(type(data)) #stores the data in a list
答案 1 :(得分:0)
是的,可以。
定义列表后,您可以添加,编辑或删除其元素。要在末尾添加更多元素,请使用append
函数:
MyList.append(data)
MyList
是列表的名称,data
是要添加的元素。
答案 2 :(得分:0)
可能是您的计算机用尽了内存来处理文件?我试图生成一个无限循环,将一个数字添加到列表中,最后得到了4700万的len(list) >> 47119572
,我用来测试的代码如下。
我在在线REPL上尝试了此代码,发现它的'len(list)'明显更低。
list = []
while True:
try:
if len(list) > 0:
list.append(list[-1] + 1)
else:
list.append(1)
except MemoryError:
print("memory error, last count is: ", list[-1])
raise MemoryError
也许尝试保存读取的数据位,而不是一次读取整个文件?
只是我的假设。
答案 3 :(得分:0)
我试图重新创建您的问题:
# creating 700kLine file
with open('700kLine.txt', 'w') as f:
for i in range(700000):
f.write(str(i+1) + '\n')
# creating list from file entries
aList = []
with open('700kLine.txt', 'r') as f:
for line in f:
num = int(line.strip())
aList.append(num)
# print(aList)
print(aList[:30])
Jupyter笔记本在打印所有700K行时会由于使用过多内存而引发错误。如果您确实要打印所有700k值,请从终端运行python脚本。