文件操作2

x 模式控制文件操作的模式
x 只写模式 不可读 文件不存在则创建 文件存在则报错
总结:x模式只写模式 文件不存在则创建文件 文件存在则报错 不可写
控制文件读写内容模式:
t 模式:
1.读写以str(unicode)为单位
2.只能是文本文件
3.必须指定字符编码,即必须指定encoding参数 encoding="utf-8"
b 模式:binary模式
1.读写以bytes为单位
2.可以针对所有文件
3.一定不能指定字符编码,即一定不能指定encoding参数

总结:
1.在操作纯文本文件方面 t模式帮我们省去编码和解码的环节,
b模式需要手动编码、解码,所以使用t模式更为方便
2.针对非文本文件(图片、视频、音频),只能使用b模式

控制文件读写操作模式:
r :只读模式
w:只写模式
a:只追加写模式
# 一:读相关操作
# 1.readline:读一行
#readlines:读取多行
# 二、写相关操作
# a.writelines()
# with open("haha/b.txt",mode="wt",encoding="utf-8")as a:
# a.writelines("111 222 333 ")
# with open("haha/b.txt",mode="wb")as f:
# l=[
# "1111nnn1111 ".encode("gbk"),
# "2556gg666666 ".encode("gbk"),
# "6666ll66 ".encode("gbk")
# ]
# f.writelines(l)
# with open("haha/b.txt",mode="wb")as f:
# l=[
# b"aa12563 ",
# b"52634 ",
# b"hah36985 "
# ]
# f.writelines(l)
# with open(r"haha.txt",mode="wb")as f:
# l=[
# "你好啊 ".encode("utf-8"),
# "小朋友,你是不是 ".encode("utf-8"),
# "有很多问号? ".encode("utf-8")
#
# ]
# f.writelines(l)
# 3.flush
with open("haha/b.txt",mode="wt",encoding="utf-8")as f:
f.write("哈哈哈哈")
f.flush()
指针的移动的单位都是以bytes/字节为单位
只有一种特殊情况:t模式下的read(n),n代表的是字符个数
f.seek(n,模式):n是指移动的字节个数
模式:
模式0:参照物是文件开头位置
f.seek(9,0) 文件开头的位置移动9个字节
f.seek(3,0) 文件开头的位置移动3个字节
模式1:参照物是当前指针所在位置
f.seek(9,1) 文件指针当前所在位置移动9个字节
f.seek(3,1) 文件指针当前所在位置移动3个字节
模式2:参照物是文件末尾位置,应该倒着移动
f.seek(-9,2)
f.seek(-3,2)

强调只有0模式可以在t 下使用 ,1,2模式只能在b 模式下使用
f.tell()获取文件指针当前位置