永久储存
文件操纵
使用open()函数打开文件,对文件进行操作。
| Python |
|---|
| f = open("1.txt", "w") # 打开文件1.txt,并赋予写入权限,此时就将文件对象赋值给f
f.write("111") # 将内容写入到文件对象中
f.writelines(["11\n", "22\n"]) # 将多个内容写入到文件对象中,可以传入可迭代对象,这里不会添加换行需要自行添加
# 此时数据保留在内存中,需要保存进行写入
# 方法一
f.close() # 这时文件关闭,如果需要继续添加则需要重新创建文件对象写入
f = open("1.txt", "r+")
# 方法二
f.flush() # 不关闭文件进行保存
# 判断写入和读取是否有权限
# 写入权限判断
f.writable() # --> True
# 读取权限
f.readable() # --> True
# 文件对象是支持迭代的可以通过for循环迭代打印文件内容
for i in f:
print(i)
# 文件内部会存在一个文件指针,每次读取指针都会向下偏移,当读取完成指针就指到文件末尾,此时再读取就会读不到数据,需要对指针重置
# 追踪文件指针位置
f.tell() # --> 获取文件指针位置
# 修改文件指针位置
f.seek(0) # --> 传入到文件开头位置
# 每次读取一行
f.readline()
# 读取全部
f.read()
# 截取指定位置,如果不指定位置则截取到指针当前位置,保存文件仅保存截取到的内容
f.truncate(29) # 截取到29处
# 如果打开文件只使用w权限默认新写入的内容会覆盖历史内容
# 文件EOF表示文件读取结束
|
文件路径处理
不同操作系统路径分割符不一样, window 是 \,其他系统则 /,处理文件路径问题使用模块 pathlib 实现,面向对象的文件系统路径,具体操作可以查看模块 pathlib。
上下文管理器 with
使用方法:
| Python |
|---|
| # 普通打开文件
f = open("1.txt", "w")
f.write("111")
f.close()
# 使用with打开文件,不需要手动关闭文件,即使在运行过程中发生异常也不影响文件的保存
with open("2.txt", "w") as f:
f.write("111")
# 同时打开多个文件使用逗号隔开
with open("1.txt", "w") as f1, open("2.txt", "w") as f2:
pass
|
Python 对象序列化pickle
可以将 Python 对象保存到文件中,可以永久存储 Python 对象,允许将字符串、列表、字典存储到文件中。
| Python |
|---|
| import pickle
x = 123
y = [1, 2, 3]
z = {"1":1, "2":2, "3":3}
# 将python对象保存到文件中,使用dump(),保存的文件后缀为.pkl
with open("data.pkl", "wb") as f:
pickle.dump((x, y, z), f)
# 将保存的python对象读取出来,使用load()
print(a)
print(b)
print(c)
|