文件操作模式

一.文件的扩展模式

(utf-8编码格式下 默认一个中文三个字节 一个英文或符号 占用一个字节)

read() 功能: 读取字符的个数(里面的参数代表字符个数)

seek() 功能: 调整指针的位置(里面的参数代表字节个数)

tell() 功能: 当前光标左侧所有的字节数(返回字节数)

seek(0)    把光标移动到文件的开头
seek(0,2)  把光标移动到文件的末尾

1.r+ 先读后写

fp = open("ceshi1.txt",mode="r+",encoding="utf-8")

先读

res = fp.read()

后写

fp.write("123")

在读

fp.seek(0)
res = fp.read()
print(res)
fp.close()

2.r+ 先写后读

fp = open(“ceshi2.txt”,mode=“r+”,encoding=“utf-8”)

先写

fp.seek(0,2)    # 把光标移动到文件的末尾
fp.write("def")

在读

fp.seek(0)      # 把光标移动到文件的开头
res = fp.read()
print(res)

fp.close()

3.w+ 可读可写 (每次打开,都要清空重写)

fp = open("ceshi3.txt",mode="w+",encoding="utf-8")

写入

fp.write("我是这个世界中,乃至整个宇宙,最帅气的男人")

读取

fp.seek(0)
res = fp.read()
print(res)
fp.close()

4.a+ 可读可写 (在写入内容时,会强制把光标移动到最后)

a模式和w模式,默认都可以创建文件

fp = open("ceshi4.txt",mode="a+",encoding="utf-8")
fp.write("123")

读取

fp.seek(0)
res = fp.read()
print(res)
fp.close()

写入内容时候,强制光标最后

fp = open("ceshi4.txt",mode="a+",encoding="utf-8")
fp.seek(3)
fp.write("xxx")
fp.close()

对比 r+

fp = open("ceshi5.txt",mode="r+",encoding="utf-8")
fp.seek(3)

后写

fp.write("xxx")
fp.close()

二.read seek tell 三个函数的使用

fp = open("ceshi5.txt",mode="r+",encoding="utf-8")
res = fp.read(6)
fp.seek(2)
res = fp.read(2)
total = fp.tell()

print(total)
print(res)

三.如果内容是中文 seek移动时注意点

fp = open("ceshi6.txt",mode="r+",encoding="utf-8")
fp.seek(5)
res = fp.read()
fp.close()

error

print("今".encode())
123\xe4\xbb\x8a
b'\xe4\xbb\x8a'

四.with 语法 (可以省略掉close操作)

with open(..) as fp:
	code..
	code..

复制图片?(二进制的字节流)

with open("集合.png",mode="rb") as fp:
	str_bytes = fp.read()

with open("集合2.jpg",mode="wb") as fp:
	fp.write(str_bytes)

在升级,三行代码实现

with open("集合.png",mode="rb") as fp1 , open("集合3.jpg",mode="wb") as fp2:
	str_bytes = fp1.read()
	fp2.write(str_bytes)
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页