gpt4 book ai didi

python - 如何在 python 中输入一个 1000 万行的大文件?

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:15 25 4
gpt4 key购买 nike

我想用 python 分析一个包含 1000 万个用户和密码的文件。文件为文本格式。以下是几行数据:

0000    00000000
0000 00001
0000 00001111
0000 000099
0000 00009999
0000 0000w
0000 5927499
0000 634252
0000 6911703
0000 701068

在 python 中,我使用以下代码读取文件:

f=open('10-million-combos.txt','r')
a=[]
for line in f.readlines():
a.append(line)

上面的代码需要几秒钟才能运行。列表中保存的数据如下所示:

>>>a[0:2]
['0000\t00000000\n', '0000\t00001\n']

要提取我使用的用户和密码:

b=[]
for i in a:
b.append(i.split('\t'))

问题是,上面的代码写了很久内存出错,无法分离用户和密码。

您对解决方案有什么建议吗?

最佳答案

问题是您要将每一行读入 Python 列表。文件有多大?这就是您要放入内存中的量。

在同一步骤中进行阅读和分析,以便 Python 可以进行垃圾收集。

当您开始分析部分时,您可能想要查看 Pandas , 这是一个用于数据分析的库。

这些建议您附加到列表的其他答案将遇到与内存使用相同的问题。诀窍是不要构建列表,逐步进行分析,这样您就不需要在内存中存储 1000 万行。

如果您按照评论中的说明递增总数,并且绝对必须将其存储在内存中,则可以将值作为键存储在字典中并递增计数。

这仍然会导致内存使用,所以如果它仍然崩溃,您的选择是:

  • 每次迭代都保存到磁盘(写入另一个文件)。然后你可以读取每个文件并获取总数,并用一个变量找出哪个文件的总数最高。这会很慢,但会用内存使用换取磁盘使用。

  • 使用修改后的二叉树来防止将任何位存储两次,并添加一个可以递增到节点的“时间”变量:

    ab美国广播公司美国广播公司A {次:0} -> B {次:1} -> C {次:2}

关于python - 如何在 python 中输入一个 1000 万行的大文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com