Python文本帮助大型文件

2024-10-01 11:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码工作得很完美,唯一的问题是它不能处理大的txt文件。1GB文本文件。我能做些什么来修复

import os

file_1 = open('file1.txt', 'r', encoding='utf8').read().splitlines()
file_2 = open('file2.txt', 'r', encoding='utf8').read().splitlines()
[file_2.remove(l) for l in file_1 if l in file_2]
with open('file2.txt', 'w') as new_file:
    [new_file.write(l + '\n') for l in file_2]

Tags: 文件代码inimporttxtnewforread
2条回答

您应该为此使用文件对象:

with open('file1.txt', 'r', encoding='utf8') as file_1,
     open('file2.txt', 'r', encoding='utf8') as file_2:

    for line in file1: # or file 2
        # Do what you need to do with reading it line by line

还要注意:

with will close file automatically after.

您需要读取文件而不将内容保存在内存中。可以通过在输入文件上使用with来实现

with open(r'C:\Users\Guy.SA\Desktop\fileB.txt', 'r') as file_2, open(r'C:\Users\Guy.SA\Desktop\fileC.txt', 'w') as new_file:
    for line_2 in file_2:
        with open(r'C:\Users\Guy.SA\Desktop\fileA.txt', 'r') as file_1:
            for line_1 in file_1:
                if line_1 == line_2:
                    break
            else:
                new_file.write(line_2)

相关问题 更多 >