python文件读取写入总结

文件操作的学习

文件读取

open函数

在文件打开需要一个重要的函数是open;

open函数介绍:

函数基本语法:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file: 要打开的文件名或文件路径。
  • mode: 打开文件的模式。
    • 'r': 读取模式(默认值)。
    • 'w': 写入模式,如果文件存在则覆盖,不存在则创建。
    • 'a': 追加模式,如果文件存在则在末尾追加,不存在则创建。
    • 'b': 二进制模式。
    • 't': 文本模式(默认值)。
    • '+': 更新模式(读取和写入)。
  • buffering: 设置缓冲策略,0 表示不缓冲,1 表示行缓冲,负数表示系统默认缓冲。
  • encoding: 指定文件的编码方式,例如 'utf-8'
  • errors: 指定编码错误处理策略,如 'ignore''replace' 等。
  • newline: 控制如何处理换行符,例如 '\n''\r\n'
  • closefd: 如果为 True,则在关闭文件时关闭底层的文件描述符。
  • opener: 自定义打开方式的函数(通常不需要)。

实例说明:

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
read()函数

read()函数语法原型:

file.read(size)

参数说明:

  • size(可选参数):表示要读取的字节数。如果省略或为负数,则读取并返回整个文件的内容。

返回值:

  • 返回一个字符串,包含了文件中从当前位置开始的 size 个字节的数据,如果 size 为负值或者省略,则读取并返回整个文件的内容。

代码示例:

with open('example.txt', 'r') as file:
    content = file.read()  # 读取整个文件内容
    print(content)

这里的话有一个需要注意的地方,如果没有讲明,初学者大多会很困惑。attention:

  • 如果文件大小超过内存可用空间,尝试一次性读取整个文件可能会导致内存溢出,因此在处理大文件时需要谨慎使用。
  • 调用 read() 会使文件指针移动到文件末尾,因此后续的文件读取操作将无法读取到文件内容。
  • 如果文件被读取完毕,再次调用 read() 会返回空字符串
readline函数

readline函数语法原型:

file.readline(size)
  • size(可选参数):表示要读取的字节数。如果省略或为负数,则读取整行。

返回值:

  • 返回一个字符串,表示文件中的一行内容(包括换行符 \n),如果已到达文件末尾,则返回空字符串 ''

注意事项:

  • 如果提供了 size 参数,则函数会尝试读取指定字节数的数据,但不会超过一行的长度。如果一行的长度超过了 size,则返回一部分该行的内容,并且文件指针会移动到该行剩余部分的开头。
  • 调用 readline() 会使文件指针移动到下一行的开头,因此后续的文件读取操作将读取下一行的内容。
  • 如果文件被读取完毕,再次调用 readline() 会返回空字符串 ''

实例代码:

with open('example.txt', 'r') as file:
    line1 = file.readline()  # 读取第一行内容
    line2 = file.readline()  # 读取第二行内容
    print("Line 1:", line1)
    print("Line 2:", line2)
readlines函数

readlines函数语法原型:

file.readlines(sizehint)

参数说明:

  • sizehint(可选参数):表示要读取的字节数的估计值。如果省略或为负数,则会尝试读取整个文件。

这个函数与read很相似,都是读取整个文件的,但是他们比较突出的区别就是返回值不同。

readlines的返回值是一个包含所有行内容的列表,每行作为一个字符串元素存储在列表中。

而read函数返回的是一个字符串。

attention:

  • 如果提供了 sizehint 参数,则函数会尝试读取指定字节数的数据,但不会超过该值。
  • 如果文件大小超过了内存可用空间,尝试一次性读取所有行可能会导致内存溢出,因此在处理大文件时需要谨慎使用。
  • 调用 readlines() 会使文件指针移动到文件末尾,因此后续的文件读取操作将返回空列表。
  • 如果文件为空,或者已经到达文件末尾,readlines() 将返回一个空列表。

实例代码:

with open('example.txt', 'r') as file:
    lines = file.readlines()  # 读取文件所有行内容
    for line in lines:
        print(line.strip())  # 去除每行末尾的换行符并打印

文件写入

文件写入的话open函数的mode参数得为w或者a等其他的参数,不能是r参数。

write()函数

函数原型:

file.write(str)
  • file:表示文件对象,通过 open() 函数打开的文件对象。
  • str:要写入文件的字符串数据。

在open函数的mode=’w‘的情况下,如果文件不存在的,则会创建该文件,如果文件已存在,则会清空文件内容并写入新的数据。

如果写入过程中发生错误(如文件不可写或磁盘空间不足),则会引发相应的异常,例如IOErrorOSError。

代码示例:

# 打开文件并写入字符串数据
with open('example.txt', 'w') as file:
    file.write("Hello, world!\n")
    file.write("This is a sample text.\n")

这个我强调一个问题,上面不是说调用write函数会清掉文件内容吗,那是对于还没运行程序之前,如果文件里有内容,就会被删掉,并写入新的数据,对于在open函数打开两次调用时是不会覆盖掉第一次写入的数据,对于上面的代码:运行结果是:

Hello, world!
This is a sample text.

然后你在重新运行程序,example.txt文件里面还是只有上面那两句。

writelines函数

函数语法:

file.writelines(lines)

lines 是包含字符串的列表或可迭代对象。

  • 文件指针位置:在调用 writelines() 函数后,文件指针会在写入操作完成后停留在最后一个字符的位置。

简单示例:

# 打开文件以写入模式
with open('example.txt', 'w') as file:
    lines = ["Hello, world!\n", "This is a sample text.\n"]
    file.writelines(lines)
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

密码小丑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值