Python-文件处理-读r写w操作参数

#读其他方法
#readline
with open(r'f.txt',mode="tr",encoding="utf-8") as tr:
res=tr.readline() #每次读取文本文件一行,以换行符作为分隔符进行读取
print(res)
#使用while循环每次读取文本文件一行
while True:
res=tr.readline()
if len(res) == 0:
break
print(res)

#readlines
with open(r'f.txt',mode="tr",encoding="utf-8") as tr:
res=tr.readlines() #将内容一次性读入内存
print(res)
#['啦啦啦啦啦啦1啦啦2啦啦\n', '啦啦1\n', '啦啦2\n']

# 强调:
#read()与readlines()都是将内容一次性读入内存,如果内容过大会导致内存溢出。


#写其他方法:t模式
with open(r'i.txt', mode="tw", encoding="utf-8") as tw:
# tw.write("111\n222\n333\n")
l = ["111\n", "222", "333"]
tw.writelines(l)
等同于
# l = ["111\n", "222", "333",444] #列表中元素必须是str类型的元素
# for l_list in l:
# tw.write(l_list)

#写其他方法:b模式
print("111".encode("utf-8"))
#b'111'
等同于
bytes("上",encoding="utf-8") #字符串编码成bytes类型

#b‘111’

#使用encode()编码转换成bytes类型
with open(r'i.txt',mode="bw") as bw:
l=["111\n".encode("utf-8"),"222".encode("utf-8"),"333".encode("utf-8")]
bw.writelines(l)
#如果是纯英文字符,可以直接加前缀小b得到bytes类型
with open(r'i.txt',mode="bw") as bw:
l=[b"111qq\n",b"222bb",b"333cc"]
bw.writelines(l)
#中文字符bytes("上".encode("utf-8"))得到bytes类型
with open(r'i.txt',mode="bw") as bw:
l=[bytes("上啊\n".encode("utf-8")),bytes("哈哈".encode("utf-8")),bytes("嘿嘿".encode("utf-8"))]
bw.writelines(l)
 
#flush
with open(r'i.txt',mode="bw") as bw:
l=[bytes("上啊\n".encode("utf-8")),bytes("哈哈".encode("utf-8")),bytes("嘿嘿".encode("utf-8"))]
bw.writelines(l) #将内存的数据交给操作系统
bw.flush() #将操作系统数据立马刷新到硬盘中

#了解:其它方法
with open(r'i.txt',mode="bw") as bw:
print(bw.readable())
# False
print(bw.writable())
#True
print(bw.closed)
#False
print(bw.name)
#i.txt
print(bw.closed)
#True
 
 
 
 


posted @ 2020-08-31 15:37  梁博客  阅读(143)  评论(0)    收藏  举报