使用python读写大文件

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 使用python读写大文件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

        当读写大文件时,如果文件较大,会一次性全部读取到内存中,容易造成内存不足,所以呢需要对大文件进行批量读写。

1、生成大数据文件

参考博文:python测试写入文件时一次打开open和多次打开open的效率_IT之一小佬的博客-CSDN博客

2、读取大文件

        常见方法有yield生成器和open()自带方法生成迭代器对象。

详见博文:使用python读取大文件_python 读取大文件_IT之一小佬的博客-CSDN博客

3、写入大文件

        对文件的修改,通常有两种模式,一是直接在原文件中进行修改并直接保存,二是对修改之后的文件存储在一个新文件中进行存储。如果遇到大文件,那么就需要使用模式一了。

3.1 小文件内容写入大文件中

        直接将小文件读取到内存中,然后追加写入大文件即可。

3.2 修改大文件中数据

3.2.1 每行数据使用write写入

示例代码:

import time

start_time = time.time()
with open('./data/big_data.txt', 'r', encoding='utf-8') as rf, \
        open('./data/new_big_data.txt', 'a', encoding='utf-8') as af:
    for line in rf:
        if "英语" in line:
            line = line.replace('英语', 'English')
        print(line)
        af.write(line)
print(f"程序耗时:{time.time() - start_time}")

运行结果:

使用python读写大文件

3.2.2 每100行数据使用writelines写入

示例代码:

import time

start_time = time.time()
data_list = []
with open('./data/big_data.txt', 'r', encoding='utf-8') as rf, \
        open('./data/new_big_data2.txt', 'a', encoding='utf-8') as af:
    for line in rf:
        if "英语" in line:
            line = line.replace('英语', 'English')
        print(line)
        data_list.append(line)
        if len(data_list) > 100:
            af.writelines(data_list)
            data_list = []
    if len(data_list) > 0:
        af.writelines(data_list)
print(f"程序耗时:{time.time() - start_time}")

运行结果:

使用python读写大文件

3.2.3 每1000行数据使用writelines写入

示例代码:

import time

start_time = time.time()
data_list = []
with open('./data/big_data.txt', 'r', encoding='utf-8') as rf, \
        open('./data/new_big_data3.txt', 'a', encoding='utf-8') as af:
    for line in rf:
        if "英语" in line:
            line = line.replace('英语', 'English')
        print(line)
        data_list.append(line)
        if len(data_list) > 1000:
            af.writelines(data_list)
            data_list = []
    if len(data_list) > 0:
        af.writelines(data_list)
print(f"程序耗时:{time.time() - start_time}")

运行结果:

使用python读写大文件

综上所述:在上面三个示例代码中,可以看出使用writelines方法,选择适当的行数写入效率是最好的。

参考博文:

Python怎么修改文件内容?Python修改文件内容的3种方法详解 – 优草派

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142770.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!