python3-open
1、介绍
python3中,可以通过内建模块的open函数,进行文件的读写,以及创建文件。
2、函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 对于文本文件,需要设置正确的编码,一般使用utf8。对于字节文件,不能设置,否则会报错
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener
- 函数的返回对象类型:
<class '_io.TextIOWrapper'>
3、mode参数
(1)r
- 表示read,即只读模式,mode参数默认值
- 文件的指针将会放在文件的开头
(2)w
- 表示write,即只写模式
- 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
(3)r+
- 打开一个文件用于读写。文件指针将会放在文件的开头。
(4)w+
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
- 因此,如果在打开的时候去读取内容,是空的
(5)类似的,字节文件对应四个模式:rb、wb、rb+和wb+
(6)a、a+、ab、ab+表示追加模式
4、文件操作
基于open函数返回对象,调用其方法。按字节读和写、按字符读和写,这四者之间和\r\n有着较复杂的关系。
(1)模式
f = open(r'G:\python-test\home\a.txt')
print(f.mode)
f.close()
- mode属性:文件打开模式。默认为r
(2)指定读
def read(self, n: int = -1)
- 默认为-1,如果为正数,表示读取指针后的几个字符。如果为负数,表示读取指针之后的所有字符.
- 返回的是字符串
(3)按行读
def readline(self, limit: int = -1)
- 默认为-1,如果为正数,表示读取指针后的几行。如果为负数,表示读取指针之后的所有行.
- 返回的是字符串
with open('a.txt', 'r', encoding='utf-8') as f:
i = 0
s = f.readline()
while s:
print(i, '---', s)
i += 1
s = f.readline()
- 按行读,又分为按读字节和读字符
- 读字符,则每一行的末尾都是换行符,会包含在读取的变量中,除了读取结束的最后一行
- 读字节,则每一行的末尾都是\n,如果以\n结尾,则最后一个读取行变量仍然为\n
(4)多行读
def readlines(self, hint: int = -1)
- 默认为-1,如果为正数,表示读取指针后的几行。如果为负数,表示读取指针之后的所有行.
- 返回的是列表,一行为一个字符串,为一个列表元素
(5)字符串写入
def write(self, s: AnyStr)
- 参数必须是字符串
- 需要注意,如果指针在末尾,这里的write实际就是在指针之后进行追加。
- 如果指针在中间或者开头,则是对指针之后的n格字符进行覆盖,如果写入的字符超过指针之后原有的字符,则会扩展
(6)多行写入
(7)设置指针位置
def seek(self, offset: int, whence: int = 0)
(8)清除
def truncate(self, size: int = None)
- 默认清除指针之后的所有字符,当size指定时,即清除指针后的size个字符
(9)关闭
def close(self) -> None