1、文件模式
x模式(控制文件操作的模式)-》了解
x, 只写模式【不可读;不存在则创建,存在则报错】
b模式补充(控制文件读写内容的模式)
t:
1、读写都是以字符串(unicode)为单位
2、只能针对文本文件
3、必须指定字符编码,即必须指定encoding参数
b:binary模式(二进制模式)
1、读写都是以bytes为单位
2、可以针对所有文件
3、一定不能指定字符编码,即一定不能指定encoding参数
1、在操作纯文本文件方面t模式帮我们省去了编码与解码的环节,b模式则需要手动编码与解码,所以此时t模式更为方便
2、针对非文本文件(如图片、视频、音频等)只能使用b模式, t模式只能读文本文件
bytes类型转换
bytes()
如果是纯英文字符,可以直接加前缀b得到bytes类型
2、文件的操作的其他方法
readline:一次读一行
readlines
f.read()与f.readlines()都是将内容一次性读入内存,如果内容过大会导致内存溢出,若还想将内容全读入内存
f.writelines() 方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符
f.flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
f.readable() 文件是否可读
f.writable() 文件是否可写
f.encoding 文件的编码格式
f.name 文件名称
f.closed 文件是否关闭
案例:
# 一:读相关操作
# 1、readline:一次读一行
# with open(r'g.txt',mode='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(r'g.txt',mode='rt',encoding='utf-8') as f:
# res=f.readlines()
# print(res)
# 强调:
# f.read()与f.readlines()都是将内容一次性读入内存,如果内容过大会导致内存溢出,若还想将内容全读入内存,
# 二:写相关操作
# f.writelines():
# with open('h.txt',mode='wt',encoding='utf-8') as f:
# # f.write('1111
222
3333
')
#
# # l=['11111
','2222','3333',4444]
# l=['11111
','2222','3333']
# # for line in l:
# # f.write(line)
# f.writelines(l)
# with open('h.txt', mode='wb') as f:
# # l = [
# # '1111aaa1
'.encode('utf-8'),
# # '222bb2'.encode('utf-8'),
# # '33eee33'.encode('utf-8')
# # ]
#
# # 补充1:如果是纯英文字符,可以直接加前缀b得到bytes类型
# # l = [
# # b'1111aaa1
',
# # b'222bb2',
# # b'33eee33'
# # ]
#
# # 补充2:'上'.encode('utf-8') 等同于bytes('上',encoding='utf-8')
# l = [
# bytes('上啊',encoding='utf-8'),
# bytes('冲呀',encoding='utf-8'),
# bytes('小垃圾们',encoding='utf-8'),
# ]
# f.writelines(l)
# 3、flush:方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
# 一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
# with open('h.txt', mode='wt',encoding='utf-8') as f:
# f.write('哈')
# # f.flush()
# 4、了解
with open('a.txt', mode='wt',encoding='utf-8') as f:
print(f.readable())
print(f.writable())
print(f.encoding)
print(f.name)
print(f.closed)