8.文件操作详解

一、前言

文件操作对于任何一门语言来说都是一个非常重要的一块内容,毕竟编程本身的目的就是处理数据,而文件就是数据最重要的一个储存形式。

对于一个文件来说,一般都有三个步骤:

  1. 打开文件
  2. 操作文件
  3. 关闭文件

这是所有语言通用的(因为底层操作系统就是这么写的),只是可能各自的实现方式不同而已。

所以接下来我们也就顺着这个逻辑来学习。

1.打开文件

首先是打开文件,函数为open

image-20240309193242230

它的函数定义非常复杂:

  • file:要打开的文件名(或者路径、又或者文件描述符)。
  • mode:打开文件的模式,默认为 ‘r’(只读模式)。
  • buffering:设置缓冲策略。如果设为 0,表示不缓冲;如果设为 1,表示使用行缓冲(仅当读取或写入到网络或文件时才会生效);如果设为 大于1的整数,表示缓冲区大小(以字节为单位)。如果省略或设为 -1,则使用系统默认的缓冲策略。
  • encoding:用于编码或解码文件的字符编码类型。
  • errors:在编码或解码文件时出现错误时的处理方式。
  • newline:控制在文本模式下如何处理换行符。可以是 None(使用系统默认换行符)、‘’(不转换换行符)、‘\n’(转换为 \n)、‘\r’(转换为 \r)、‘\r\n’(转换为 \r\n)。
  • closefd:设置为 True(默认值)表示在关闭文件时同时关闭文件描述符。如果设置为 False,则只关闭文件,不关闭文件描述符。
  • opener:用于打开文件的自定义文件打开函数。

由于这个函数过于复杂,所以这里只对常用的几个参数进行示例演示,至于其它剩余参数,大部分情况下你应该都用不到,如果真遇到了,到时候再浏览器搜索一下就好了。

对于绝大多数情况来说,我们只用得到下面三个参数:

  1. file:就是你想要打开的文件名(路径)
  2. mode:你想要用什么方式来打开文件,即模式,一般有只读只写读写追加这几种,不填则默认为只读
  3. encoding:你想要用什么编码格式来打开这个文件,现在一般为utf-8编码(全球通用的编码),但依旧还有很多文本采用的本地编码,中国地区的本地编码就是GBKGB2312编码,一般直接指定GBK即可,它兼容GB2312

需要注意的是,这个参数默认使用本地编码,所以很多时候你不指定这个参数,去处理utf-8编码的文件,就会出错,不理解编码的可以参考文章:编码

举个例子:

f = open('1.txt', 'r', encoding='utf-8')

它打开后会有个返回值,这个返回值就代表着我们打开的那个文件,后面通过操作这个返回值,就基本等同于操作这个文件了。

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux