一、前言
文件操作对于任何一门语言来说都是一个非常重要的一块内容,毕竟编程本身的目的就是处理数据,而文件就是数据最重要的一个储存形式。
对于一个文件来说,一般都有三个步骤:
- 打开文件
- 操作文件
- 关闭文件
这是所有语言通用的(因为底层操作系统就是这么写的),只是可能各自的实现方式不同而已。
所以接下来我们也就顺着这个逻辑来学习。
1.打开文件
首先是打开文件,函数为open
:
它的函数定义非常复杂:
file
:要打开的文件名(或者路径、又或者文件描述符)。mode
:打开文件的模式,默认为 ‘r’(只读模式)。buffering
:设置缓冲策略。如果设为 0,表示不缓冲;如果设为 1,表示使用行缓冲(仅当读取或写入到网络或文件时才会生效);如果设为 大于1的整数,表示缓冲区大小(以字节为单位)。如果省略或设为 -1,则使用系统默认的缓冲策略。encoding
:用于编码或解码文件的字符编码类型。errors
:在编码或解码文件时出现错误时的处理方式。newline
:控制在文本模式下如何处理换行符。可以是None
(使用系统默认换行符)、‘’(不转换换行符)、‘\n’(转换为 \n)、‘\r’(转换为 \r)、‘\r\n’(转换为 \r\n)。closefd
:设置为 True(默认值)表示在关闭文件时同时关闭文件描述符。如果设置为 False,则只关闭文件,不关闭文件描述符。opener
:用于打开文件的自定义文件打开函数。
由于这个函数过于复杂,所以这里只对常用的几个参数进行示例演示,至于其它剩余参数,大部分情况下你应该都用不到,如果真遇到了,到时候再浏览器搜索一下就好了。
对于绝大多数情况来说,我们只用得到下面三个参数:
- file:就是你想要打开的文件名(路径)
- mode:你想要用什么方式来打开文件,即模式,一般有只读、只写、读写、追加这几种,不填则默认为只读
- encoding:你想要用什么编码格式来打开这个文件,现在一般为
utf-8
编码(全球通用的编码),但依旧还有很多文本采用的本地编码,中国地区的本地编码就是GBK
或GB2312
编码,一般直接指定GBK
即可,它兼容GB2312
需要注意的是,这个参数默认使用本地编码,所以很多时候你不指定这个参数,去处理utf-8编码的文件,就会出错,不理解编码的可以参考文章:编码。
举个例子:
f = open('1.txt', 'r', encoding='utf-8')
它打开后会有个返回值,这个返回值就代表着我们打开的那个文件,后面通过操作这个返回值,就基本等同于操作这个文件了。