文件操作
文件的打开和关闭
通过调用open打开一个文件open(name[,mode[,buffering]])
。open函数必须传递一个参数是文件的路径。如果python找不到文件路径会抛出错误FileNotFoundError
。
在Windows环境下,存在三种文件路径的写法
open(r'd:\test.txt')
open('d:\\test.txt')
open('d:/test.txt')
open函数返回的是一个文件对象,该对象有3中常用的属性
- close判断文件是否关闭,文件如果是打开状态则返回false
- mode返回文件的打开模式
- name返回文件名称
在open之后需要手动调用.close()
关闭文件对象。这样才会把缓存区的数据写入到文件,并且释放文件资源给其他程序使用。
opne函数的mode参数
如果指定一个文件路径调用open函数打开,默认打开的文件为只读模式,无法对文件修改。我们可以通过指定mode参数调整文件打开模式。
mode参数 | 读 | 写 | 附加 | 以二进制读写 | 是否删除原内容 | 文件不存在时,是否产生异常 | 指针初始位置 |
---|---|---|---|---|---|---|---|
r(只读) | T | T | 头 | ||||
r+ | T | T | T | 头 | |||
rb+ | T | T | T | T | 头 | ||
w | T | T | 不抛出异常,程序会新建文件 | 头 | |||
w+ | T | T | T | 不抛出异常,程序会新建文件 | 头 | ||
wb+ | T | T | T | T | 不抛出异常,程序会新建文件 | 头 | |
a | T | 不抛出异常,程序会新建文件 | 尾 | ||||
a+ | T | T | 不抛出异常,程序会新建文件 | 尾 | |||
ab+ | T | T | T | 不抛出异常,程序会新建文件 | 尾 |
- 通过w模式打开文件时,文件原有的数据将会被清除
- a模式可以理解为追加模式,可以向文件的末尾追加数据,文件原本的数据不会被清除。
- +符号表示同时允许写和读操作
- w+会删除原有数据,打开的文件对象可以读写,文件不存在会新建文件;
- r+打开的文件对象可以读写,不会删除原有数据,但是文件不存在会抛出异常
- a+打开的文件对象可以读写,不删除原有数据,可以在文件内的任意位置开始读取数据,但是只能在文件末尾追加数据。当文件不存在时候会新建文件
- open函数默认将打开的文件作为文本文件处理,参数b告诉程序将文件作为一个二进制文件进行处理
opne函数的buffering参数
参数buffering控制打开文件对象的时候是否设置写入缓冲区
- 参数为 0或false时不设置缓冲区,任何对文件对象的操作将直接持久化到硬盘中的实际文件中
- 如果设置1或者true,python会设置一个行缓冲区,会将所有的写入数据先写入到缓冲区中,碰到换行符才会将缓冲区数据写入到文件中。或者手动调用flush()或者close()才会执行写入。
- 如果取大于1的数,表示设置的缓冲区大小。
- 当不设置参数时默认为1
- 参数为负数时,也会开启缓冲区,缓冲区满执行写入或者手动刷入