目录
x模式(控制文件操作模式)
# 指针移动的单为单位的位都是以bytes字节
# ? ? ? ? t模式下的read(n),n代表的是字符个数
#一,读关的操作
# 1,readline 一次读一行
# 2,readlines
# 二,写相关操作
# f.writelines()
#f.write()
# 写入字符或者bytes()类型字节
# 四,了解
x模式(控制文件操作模式)
x只写模式,不可读;不存在则创建,创建过了则报错 相当于判断文件是否存在 # with open('a.txt',mode='x',encoding='utf-8') as f: # ? ? pass
with open('c.txt',mode='x',encoding='utf-8') as f: ? ? f.read() # ? ? io.UnsupportedOperation: not readable
with open('d.txt', mode='x', encoding='utf-8') as f: ? ? f.write('哈哈哈\n')
# 指针移动的单为单位的位都是以bytes字节
# 只有一种特殊情况:
# ? ? ? ? t模式下的read(n),n代表的是字符个数
# with open("d.txt","r",encoding="utf-8") as f: # ? ? res=f.read(4) # ? ? print(res)#哈哈哈h # f.seek(n,模式) # n指的时移动的字节个数 # 模式: # 0:参照物是文件开头位置 # f.seek(3,0) # 1:参照物是当前指针所在位置 # f.seek(3,1) # 2:参照物是文件末尾位置,应该倒着移动 # f.seek(-3,2) # 强调只有0模式可以在t下使用,1,2必须在b模式下使用 # f.tell()获取指针当前位置 # 示范 with open("h.txt","rb")as f: ? ? # f.seek(9,0) ? ? # print(f.tell()) ? ? # f.seek(3,0) ? ? # print(f.tell()) ? ? # print(f.read().decode())#从当前指针开始读取 ? ? # f.seek(9,1) ? ? # print(f.tell())#9 ? ? # f.seek(3,1)#1模式是从当前指针往后读取 ? ? # print(f.tell())#12 ? ? f.seek(-3,2) ? ? print(f.read().decode("utf-8"))#好
#一,读关的操作
# 1,readline 一次读一行
# with open("g","rt",encoding="utf-8") as f: ? ? # res1=f.readline() ? ? # res2=f.readline() ? ? # print(res2) ? ? # while True: ? ? # ? ? line=f.readline() # 指定读的内容,每次读一行 ? ? # ? ? if len(line)==0: ? ? # ? ? ? ? break ? ? # ? ? print(line) ? ? #
# 2,readlines
# with open("g","rt",encoding="utf-8") as f: # ? ? res=f.readlines() # ? ? print(res) # 3,f.read与f.readlines()都是一次性将内容读入内存,如果内存太过多会造成内存溢出,若还想将内容全部读入内存可以 # 利用循环,for循环和while循环
# 二,写相关操作
# f.writelines()
# with open("h.txt","wt",encoding="utf-8") as f: ? ? # l=["111\n","222","333"] ? ? # res1=f.writelines(l) def writelines(self, lines: List[AnyStr]) ->
#f.write()
# with open("h.txt","wt",encoding="utf-8")as f: # ? ? # f.write("111\n","222","333","444") # ? ? # TypeError: TextIOWrapper.write() takes exactly one argument (4 given) # ? ? f.write("111\n222\n333\n")
# 写入字符或者bytes()类型字节
# with open("h.txt","wb")as f: ? ? # l=[ ? ? # ? ? "111aaa\n".encode("utf-8"), ? ? # ? ? "222bbb".encode("utf-8"), ? ? # ? ? "333ccc".encode("utf-8") ? ? # ? ? # ] ? ? # 补充一下:如果存英文字符,可以直接加前缀b得到bytes类型 ? ? # l = [ ? ? # ? ? ? ? b"111aaa\n", ? ? # ? ? ? ? b"222bbb", ? ? # ? ? ? ? b"333ccc" ? ? # ? ? # ? ? ] ? ? # 补充二:”上“.enconding("utf-8")等同于bytes("上",encoding="utf-8") ? ? # l=[ ? ? # ? ? bytes("上啊",encoding="utf-8"), ? ? # ? ? bytes("冲啊",encoding="utf-8"), ? ? # ? ? bytes("小垃圾们",encoding="utf-8") ? ? # ] ? ? # f.writelines(l)
# 四,了解
# 1,f.flush()在w的模式下作用,把写入的数据立马从内从写入硬盘 # 操作系统是智能的,一点数据有时候不会立马写入硬盘,一般用于用于测试模式中 # with open("h.txt","wt",encoding="utf-8")as f: # ? ? print(f.readable()) # ? ? print(f.writable()) # ? ? print(f.encoding) # ? ? print(f.name) # ? ? print(f.closed) """ False True utf-8 h.txt False
"""
|