1. 基本操作
# 写
fp = open('a.txt', 'w', encoding='utf-8')
fp.write('写入一个字符串')
fp.close()
# 读
fp = open('a.txt', 'r', encoding='utf-8')
content = fp.read()
fp.close()
print(content) # 写入一个字符串
2. open()函数
'''
1. open()函数:打开一个文件,返回文件对象
open(file, mode='w', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
a. file : 必需,文件的路径(相对或者绝对路径)【常用】
b. mode : 可选,文件的打开模式,默认为 'r'【常用】
c. buffering : 设置缓冲
d. encoding : 编码格式,一般使用utf8【常用】
e. errors : 报错级别
f. newline : 区分换行符
2. 常见的 mode
'r' 只读,指针放在开头【默认】
'r+' 覆盖的读写;文件不存在报错
'w' 只覆盖的写;当文件不存在时,会创建新文件
'w+' 覆盖的读写;当文件不存在时,会创建新文件
'a' 追加的写,不读,如果不存在,会创建新文件
'a+' 追加的读写,追加,如果不存在,会创建新文件
'b' 以二进制形式打开
'''
3. 文件对象的常用方法
'''
(1) f.close()
-- 关闭一个已打开的文件
-- 关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误
-- 在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的
(2) f.read([size])
-- 从文件读取指定的字符数,如果未给定或为负则读取所有
(3) f.write(str)
-- 向文件中写入指定字符串,返回的是写入的字符长度
-- 调用f.write()方法写文件时,操作系统不会立刻将数据写入磁盘,而是放到内存缓存起来,空闲时在慢慢写入
-- 只有调用close()方法时,操作系统才会将全部数据写入磁盘
'''
4. 使用 with 的方式打开文件
# 特点:可以自动关闭文件
with open('a.txt', 'w') as fp:
fp.write('abc')
5. 文件的序列化、反序列化
'''
(1) 序列化(写)
pickle.dump(obj, file, [,protocol])
-- 将 obj 对象序列化存入 file 中
-- protocol:序列化使用的协议
-- 如果该项省略,则默认为 0
-- 如果为 负值 或 HIGHEST_PROTOCOL,则使用最高的协议版本
(2) 反序列化(读)
pickle.load(file)
-- 将 file 中的对象序列化读出
'''
# 序列化写入【以 'wb' 打开】
with open("a.txt", "wb") as fp:
pickle.dump([1, 2, 5, 9, "66"], fp)
# 序列化读出【以 'rb' 打开】
with open("a.txt", "rb") as fp:
content = pickle.load(fp)
print(content)