对文件进行读写操作是很常见的 I/O 操作,在Python中我们可以通过内置函数
open
来完成。
1. open函数介绍
使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。
语法:open(name, mode, encoding)
name
:要打开的目标文件名的字符串,也就是文件所在的具体路径。为防止路径中出现转义问题,可以在路径前加一个r
.mode
:设置文件打开的模式,包括只读、写入、追加等encoding
:编码格式,推荐使用utf-8
注意:在文件路径前面加r
是为了取消字符串中的所有可能转义,即字符串的所有字符都会被当成正常字符
mode常见模式
文件读写模式 | 描述 |
---|---|
r | 只读模式,文件不存在会报IO错误,默认就是该模式 |
w | 用于写模式,文件不存在就会自动创建 |
a | 用于追加,文件不存在会自动创建 |
b | 二进制模式 |
r+ | 相当于r+w,可读可写,文件不存在会报IO错误 |
w+ | 相当于w+r,可读可写,文件不存在会自动创建 |
a+ | 相当于a+r,可追加可写,文件不存在会自动创建 |
注意:默认都是以文本模式打开文件,如果要以二进制模式打开,那么就给对应模式加上b
即可,如rb
、wb
、ab
、rb+
、wb+
、ab+
等
2. 读文件
读取文件操作步骤分为三步,打开文件、读数据、关闭文件。
# 1. 以 r 模式打开文件, 获取文件对象
f = open(r"D:\\test.txt", "r", encoding='utf-8')
# 2. 读文件
data = f.read()
# 3. 关闭文件
f.close()
常见读取文件数据函数
函数 | 描述 |
---|---|
read() | 每次读取整个文件,将读取内容放到字符串中,返回str对象 |
readline() | 每次只读文件中的一行内容,将读取到的一行内容放到字符串中,返回str对象 |
readlines() | 每次按行来读取整个文件,读取到每行内容依次放到列表中,返回list对象 |
注意
- 操作文件需要通过
open
函数打开文件得到文件对象 - 文件读取完成后,要使用文件
对象.close()
方法关闭文件对象,否则文件会被一直占用,且会占用操作系统的资源。
读文件支持的模式见open()
函数读相关的mode
模式
3. 写文件
写文件的操作步骤和读取一样,打开文件、写数据、关闭文件,把读模式改成写模式,把读数据改成写数据。
# 1. 以 w 模式打开文件, 获取文件对象
f = open(r"D:\\test.txt", "w", encoding='utf-8')
# 2. 写文件
data = f.write('hello world')
# 3. 内容刷新
f.flush()
写操作注意:
- 文件如果不存在,使用
w
模式,会创建新文件 - 文件如果存在,使用
w
模式,会将原有内容清空 - 直接调用
write
,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区 - 当调用
flush
的时候,内容会真正写入文件 close()
方法,带有flush()
方法的功能- 在写入内容的时候,可以使用
\n
来写出换行符 - 建议避免频繁的操作硬盘,导致效率下降,可以攒一堆,一次性写磁盘。
写文件支持的模式见open()
函数写相关的mode
模式
4. with 方式读写文件
为避免读取文件出现忘记关闭文件对象的操作,可以在读写文件的时候使用with语句
,with语句
自带关闭文件操作。
# with语句,写操作
with open(r"D:\test.txt", "w") as f:
f1.write("hello world 1\n")
# with 语句读操作
with open(r"D:\test.txt", "r") as f:
data = f2.read()
以上是python中常见的文件读写操作