程序运行时所产生的数据,是存储在内存里面的。当我们终止程序或者计算机被关机时,内存就被会清空,数据就被全部丢失。我们需要把有用的数据从内存迁移到磁盘等永久存储设备,文件读写
就是一种迁移方式。
在Python
中,文件的读写操作,由open
这个内置模块实现。
r
>>> f = open('filename','r')
>>> f
<_io.TextIOWrapper name='main.py' mode='r' encoding='UTF-8'> # 文件对象
>>> f.read() # 读取所以内容
>>> f.read(size) # 读取指定内容
>>> f.readline() # 读取一行,并且把指针指向下一行
>>> f.readlines() # 以行为单位分割成一个列表
>>> f.close() # 关闭文件对象,释放资源
# readline 遍历
>>> while True:
>>> line = f.readline()
>>> if line:
>>> print(line)
>>> else:
>>> break
>>> f.close()
'line1'
'line2'
'line3'
...
# readlines 遍历
>>> for line in f.readlines():
>>> line.strip() # strip 字符串方法,去除两边空格 \n 换行符等..
>>> f.close()
'line1'
'line2'
'line3'
...
w
f = open('filename', 'w')
f.write('hello!')
f.close()
# 读文件时,如果文件不存在,会报错。而写文件时,如果文件不存在则创建它。
a
f = open('filename', 'a') # w 清空文件写入,a 追加到文件末尾写入
r
只读,w、a
只写,如果想要既可以读,又可以写,可以使用r+、w+、a+
等模式。
上下文管理器
>>> with open('filename', 'r') as f:
>>> f.read()
# with 中代码块的内容执行完毕,自动调用 f.close() 释放资源
with 的实现,参考 - 上下文管理器
encoding
# open 默认针对文件内容解析的编码的 utf-8,我们可以自己指定编码
# ignore 忽略编码报错,即使乱码也强制读取
f = open('filename', 'r', encoding='gbk', errors='ignore')
参考 - 字符编码
rb、wb
# 读取图片、视频等非文本对象、需要用二进制读取
f = open('filename', 'rb') # wb 写入 byte 数据
f.read()
b'\0x1'