Python 中非常大的文本文件的独特行

问题描述 投票:0回答:1

假设我有一个非常大的文本文件,其中包含不同任意长度的行。我想删除重复的行,如何在 python 中执行此操作?如何编写基于磁盘的代码,我不明白。 无法使用 bash 或 powershell 命令

有很多方法可以通过加载到 RAM 来做到这一点,但我不明白如何在很少甚至不使用 RAM 的情况下做到这一点。

python sorting unique disk-based
1个回答
0
投票

如果您有一个非常大的文本文件,并且想要删除重复行,同时最大限度地减少 RAM 使用量,则可以使用基于磁盘的方法。这意味着您将逐行读取并处理文件,将唯一的行写入临时文件,然后用临时文件替换原始文件。

这是实现此目的的示例 Python 代码:

def remove_duplicates(input_file):
seen_lines = set()

with open(input_file, 'r') as in_file, open('temp_file.txt', 'w') as out_file:
    for line in in_file:
        if line not in seen_lines:
            seen_lines.add(line)
            out_file.write(line)

# Replace the original file with the temporary file
import shutil
shutil.move('temp_file.txt', input_file)

# Usage:
remove_duplicates('large_file.txt')

此代码逐行读取输入文件,跟踪它在 saw_lines 集中已经看到的行。如果一行不在集合中,则它被认为是唯一的并被写入临时文件。最后,移动临时文件来替换原始文件。

确保将“large_file.txt”替换为大文本文件的实际路径。

这种方法可确保一次只有一行文件位于内存中,从而最大限度地减少 RAM 使用。请记住,与内存中的解决方案相比,此方法可能会更慢,但它适用于需要考虑内存限制的非常大的文件。

© www.soinside.com 2019 - 2024. All rights reserved.