Python之文件的读写

本文介绍了Python中文件的读写方法,包括f.read(), f.readline(), f.readlines(),并讨论了不同模式如r, w, a等。强调了使用生成器和迭代器在处理大文件时的内存优势,以及with语句在自动关闭文件和按行读取数据方面的优点。同时指出,面对超大文件时,如果仅有一行数据,应考虑采用按指定大小读取的策略。" 75412629,5677641,Swift内存模型详解:布局、对齐与内存篡改,"['Swift开发', '内存管理', '编程原理']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读文件:

  1. f.read(size)             默认读取整个文件,放进内存中,如果给size穿一个大小,则读size个字节
  2. f.readline()              读取一行,一行一行地读
  3. f.readlines()            读取整个文件,封装成一个列表中,占用空间

模式:

  • r、w、a                  只读、只写、文末追加
  • rb、wb、ab            以二进制的方式
  • r+、w+、a+            可读可写模式,
  • rb+、wb+、ab +     以二进制的方式+读写模式

r、r+:如果没有改文件,则报错FileNotFoundError,写的时候回覆盖原数据,打开的时候光标去到最前的位置
w、w+:如果没有改文件,自动创建文件,写的时候会覆盖原数据
a、a+:如果没有改文件,自动创建文件,写的时候会在文件最后追加,打开的时候光标去到最后的位置
# 1. 使用 f.read()
with open("a", "r+", encoding="utf8") as f:
    file = f.read()
    print(file)


# 2. 使用 f.readline()
with open("a", "r+", encoding="utf8") as f:
    line = f.readline()
    while line:
        print(line.replace("\n", ""))
        line = f.readline()


# 3. 使用 f.readlines()
with open("a", "r+", encoding="utf8") as f:
    for line in f.readlines():
        print(line.replace("\n", ""))




# 输出:
# first line
# second line
# third line

但是,使用生成器和迭代器的方法更加节省内存,通常在读大文件的时候使用

# 使用生成器(大文件,节省内存)
def get_line_generator(filepath, block_size=1024*1024):
    file = open(filepath)
    wile True:
        chunk = file.read(block_size)
        if not chunk:
            break
        yield chunk


for line in get_line_generator("a"):
    print(line)



# 使用迭代器
with open(file, "r+", encoding="utf8") as f:
    for line in f:
        print(line, end="")

使用with这种标准的读取文件方式的好处有:

1、with上下文管理器自动关闭打开的文件

2、在迭代文件对象时,是一行一行地读取数据的,不会占用太大的内存

但是,如果存在一个10G的大文件,而且只有一行数据,那么使用with这种标准方式是行不通的。可以使用生成器的那种方式,每次读取指定大小的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值