本篇是 Python 系列教程第 18 篇,更多内容敬请访问我的 Python 合集
通常使用内置的 open(文件路径, 模式, encoding="utf-8")
函数。
常见的模式有:
可以将这些模式组合起来使用,例如:
如果open()
函数执行成功,会返回一个文件对象。后续可以对这个对象进行读取或写入操作。
f = open('./data.txt', 'r', encoding='utf-8')
文件对象有个read()
方法,会一次性读取文件里的所有内容,并返回字符串格式。
实例:
file = open('data.txt', 'r', encoding="utf-8")
print(file.read())
注意:
read()
后再次调用,会返回空,因为程序会记录文件被读取的位置,第一次read()
时已经读到文件末尾,第二次read()
后面就没有内容了。read()
,因为会一次性读取文件的所有内容,可能挤爆内存。上面说大文件不适合用read()
,那有别的替换方案吗?当然有,解决方案就是一次性只读取部分内容,如:
read()
传一个数字参数如read(1024)
,表示一次读多少字节,下次再调用read(1024)
时就会继续从上次的结束位置读取。readline()
,此方法一次只会读取一行内容,是根据换行符来判断本行结尾的,而且换行符也会被当做内容的一部分被读取。上面的两种方式可搭配while
循环来用,另外还有一个readlines()
方法,会一次性返回所有行,组成一个字符串列表,一般搭配for
循环使用。
调用open()
函数时第二个参数传w
或a
就可以进行文件写入操作。这里说明一点,如果第二个参数是r
,且文件不存在就会报FileNotFoundError
错误,但是w
或a
就不会报错,它会自动创建一个文件。
在打开或创建文件之后就可以调用文件对象的write()
方法进行写入操作了。
示例:
with open('data.txt', 'w', encoding="utf-8") as file:
file.write("hello ")
file.write("python")
data.txt内容:
hello python
注意write()
方法并不会自动换行,需要手动添加换行符,如把代码改成file.write("hello\n")
,data.txt就会变成:
hello
python
如果我们使用w
模式,文件就只能写入不能读取,如果我们想先读取再写入,可以用r+
模式
文件操作完毕后,文件对象需要调用一个close()
方法关闭文件释放资源。
每次文件操作完毕后都应该关闭文件,但是有可能会粗心忘记关闭,怎么办呢?我们可以在调用open()
函数打开文件的时候使用with
关键字,然后用as
指定读取到的文件,这样在with
代码块执行完后文件就会被自动关闭了,实例:
# 使用 with 语句来读取文件
with open('data.txt', 'r', encoding='utf-8') as file:
for line in file.readlines():
print(line.strip())