一、open()方法
open()方法用于打开一个文件,返回文件对象。在对文件进行处理过程中,都需要用到这个函数,如果文件无法被打开,报OSError错误
注意:使用open()方法一定要记得关闭文件对象,即使用close()方法
语法:
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:自定义开启器
文件打开模式mode有如下参数:
模式 | 描述 |
---|---|
t | 文本模式 (默认) |
x | 写模式,新建一个文件,如果该文件已存在则会报错 |
b | 二进制模式 |
+ | 打开一个文件进行更新(可读可写) |
U | 通用换行模式(Python 3 不支持) |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
注意:mode默认为文本模式,如果要以二进制模式打开,加上 b 。
二、File对象常用方法
File对象常用方法
方法 | 描述 | 举例 |
---|---|---|
file.open() | open()方法用于打开文件,返回文件对象 | filename = open(".\\file.txt" , "r") 只读方式打开当前目录下文件file.txt,返回一个文件对象 |
file.close() | close()方法用于关闭文件,关闭后文件不能再进行读写操作 | filename.close() 关闭文件filename |
file.flush() | flush()用来把文件从内存buffer(缓冲区)中强制刷新到硬盘中,同时清空缓冲区。 一般情况下,文件关闭后会自动刷新到硬盘中,但有时需要在关闭前刷新到硬盘中,可以使用 flush() 方法 语法:fileobject.flush() 参数:无 返回值:无 |
|
file.fileno() | fileno()方法返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上 语法:fileObject.fileno() 参数:无 返回值:返回文件描述符
|
|
file.isatty() |
file.isatty()方法,如果文件连接到一个终端设备返回 True,否则返回 False 语法:file.isatty() 参数:无 返回值:如果连接到一个终端设备,返回 True,否则返回 False |
|
file.next() | file.next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration Python 3 中的 File 对象已不支持 next() 方法 语法:file.next() 参数:无 返回值:返回文件的下一行 | Python2.0:
|
file.read(size) | file.read(size)从文件读取指定的字节数,如果未给定或为负则读取所有 语法:file.read(size) 参数: size - 从文件中读取的字节数 返回值: 返回从字符串中读取的字节 |
|
file.readline(size) | file.readline(size)用于读取整行文件,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符 语法:file.readline(size) 参数: size - 从文件中读取的字节数 返回值:返回从字符串中读取的字节 |
|
file.readlines(sizeint) | file.readlines(size) 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理, 如果碰到结束符 EOF 则返回空字符串 语法:file.readlines(size) 参数: size - 读取文件的大小,如果size大于缓冲区的大小,则读取缓冲区大小的数据;如果size小于缓冲区的大小,读取size大小的数据,但不是完全的等于size的大小,一般读取比size大的整行的数据 返回值:返回列表,包含所有的行 |
|
file.seek(offset , whence) | file.seek(offset , whence)方法用于移动文件读取指针到指定位置 语法:file.seek(offset , whence) 参数:
返回值: 如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1 |
|
file.tell() | file.tell()方法返回文件指针当前位置 语法:file.tell() 参数:无 返回值: 文件指针当前位置 |
|
file.truncate(size) | file.truncate(size)方法从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小 语法: file.truncate(size) 参数: size - 可选,如果存在则文件截断为 size 字节 返回值:无 注意:截断操作不改变文件指针位置 |
|
file.write(str) | file.write(str)方法用于向文件中写入指定字符串。在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,此时文件内无法看到写入的内容; 如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not 'str',即str.encode("utf-8");读取文件内容时,要用decode方法将bytes形式转换为str,即str.decode("utf-8"); 语法: file.write(str) 参数: str - 要写入文件的字符串 返回值:返回的是写入文件的字符长度 |
|
file.writelines(sequence) | file.writelines(sequence)方法用于向文件内写入一个序列的字符串列表,这一序列字符串可以是由迭代对象产生的,如一个字符串列表,如果需要换行则要自己加入每行的换行符 语法: file.writelines(seq) 参数: seq - 要写入文件的字符串序列 返回值:无 |
|