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)
该文件中有700k行(每行最多2位数)我只能在该文件中获得~280k行到我的aList中。
那么,如何将aList容量扩展到280k甚至更多? (这种情况有不同的解决方案吗?)
您好,我刚刚解决了这个问题。感谢您的所有帮助。这是一个明显的缓冲问题。解决方案只是增加缓冲区的大小。
链接在这里Increase output buffer when running or debugging in PyCharm
请试试这个。
filename = '700kLine.txt'
with open(filename) as f:
data = f.readlines()
print(data)
print(type(data)) #stores the data in a list
是的你可以。
定义列表后,您可以添加,编辑或删除其元素。要在最后添加更多元素,请使用append
函数:
MyList.append(data)
其中MyList
是列表的名称,data
是您要添加的元素。
我试图重新创建你的问题:
# 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脚本。
可能是您的计算机内存不足以处理文件?我已经尝试生成一个无限循环,将一个数字附加到列表中,最后我得到了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
也许尝试保存读取的数据而不是一次读取整个文件?
只是我的假设。