python文件读写库_【8】python文件的读写方法
(1)、讀文件的步驟:
(1)打開文件
open(path,flag,encoding,[errors])
path:打開路徑
flag:打開方式 r(只讀) rb(二進(jìn)制格式) r+(可以讀寫)
w(只寫,存在覆蓋,不存在創(chuàng)建) wb(寫入二進(jìn)制) w+(用于讀寫)
a(文件存在,追加) a+()
encoding:編碼方式
errors:錯誤處理
(2)讀取文件
(3)關(guān)閉文件
(2)讀取文件的幾種方法
#第二步:讀取文件內(nèi)容 的四個方法
#1:方法1-讀取文件的全部內(nèi)容[只適合讀取小的文件,不然費內(nèi)存]
str1=f.read()print(str1)#2 方法2-讀取指定字符數(shù)
str2=f.read(10)print(str2)
str3=f.read(2)print(str3)'''輸出:
def proces
sF
總結(jié):文件不關(guān)閉的情況下,讀完一次,指針在最后邊,繼續(xù)讀2個字符信息。'''
#3 方法3-每次讀取一行數(shù)據(jù),包括‘\n’#str4=f.readline()
str4=f.readline(10) #表示讀取一行的10個字符
print(str4)#4 方法4-讀取方式4 讀取所有行并返回列表
list7=f.readlines()
list7=f.readlines(22) #每行讀取這么多
print(list7)
(3)關(guān)閉文件
#第三步:關(guān)閉文件
f.close()
【總結(jié)】:完整的兩種讀文件方式
方法1:
try:
f1=open(path,'r',encoding='utf8',errors='ignore')print(f1.read())except:print("文件讀取出錯!")finally:iff1:
f1.close()
方法2:帶with的自動關(guān)閉文件的方式
#方法2 with 自動關(guān)閉文件
path=r'E:\[AAA]全棧學(xué)習(xí)python\day2\file1.txt'
try:
with open(path) as file_obj:
content=file_obj.read()print(content)except:print("讀取失敗!")
一、原生態(tài)三步法寫入文件
#文件寫入
#第一步:打開文件
path=r"E:\[AAA]全棧學(xué)習(xí)python\day2\file2.txt"f=open(path,'w')#第二步:寫文件#1 這里其實只是先寫入了緩沖區(qū),但是還沒得奧文件中去,需要刷新
f.write("jiajia is a beautiful girl333 !")#2 刷新緩沖區(qū),就是立即寫入文件,不寫刷新就是關(guān)閉才能寫入文件
f.flush()#第三步:關(guān)閉文件
f.close()
說明: flush()是及時就寫入到文件中去,沒有這個flush的話 只會等到文件關(guān)閉的時候才會被寫入到文件。
【注意】:還有就是在寫入時候遇到'\n' 或者是緩沖區(qū)滿了也會自動刷新
案例2:用帶with自動關(guān)閉文件且追加的方式寫入
#案例2:用帶with自動關(guān)閉文件且追加的方式寫入
with open(path,'a') as file_obj:
file_obj.write("康忙北鼻是一個帥哥!")#file_obj.flush() #這種方式是不需要刷新與關(guān)閉操作的。
案例3
#1 普通寫入一個文件信息
path=r'E:\[AAA]全棧學(xué)習(xí)python\day3\file1.txt'with open(path,'w') as f1:
str="I love programming"str2="I also like write articles"f1.write(str)
f1.write(str2)'''輸出:
發(fā)現(xiàn)兩個寫入的文件信息都在一行顯示了。
I love programmingI also like write articles
解決辦法:
在每個str 中加上換行符即可!'''
#2每添加一段信息 ,帶換行信息寫入如何做呢!
path2=r'E:\[AAA]全棧學(xué)習(xí)python\day3\file2.txt'with open(path,'w') as f1:
str="I love programming\n"str2="I also like write articles \n"f1.write(str)
f1.write(str2)'''輸出
I love programming
I also like write articles'''
#3 附加到文件file2
with open(path2,'a') as file_obj:
file_obj.write("i am the first one!\n")
file_obj.write("I AM THE SECOND ONE!\n")'''輸出:
i am the first one!
I AM THE SECOND ONE!'''
二、二進(jìn)制文件的寫入
案例1
# 存入和讀取二進(jìn)制文件信息
path = r'E:\[AAA]全棧學(xué)習(xí)python\day3\file3.txt'
with open(path,'wb') as f1:
str_bytes='I am jiyongjia !'.encode('utf-8')
f1.write(str_bytes)
with open(path,'rb') as f2:
str2=f2.read()
print(str2)
print(type(str2))
'''
輸出、
b'I am jiyongjia !'
我們發(fā)現(xiàn)讀取的并不是字符串,所以并不好處理
'''
總結(jié):我們發(fā)現(xiàn)讀取的并不是字符串,所以并不好處理
案例2:處理以上案例,讓讀取出的信息是一個str 方便處理
#讀取
with open(path,'rb') as f2:
str2=f2.read()print(str2.decode('utf-8'))print(type(str2.decode('utf-8')))'''輸出:
I am jiyongjia !
這里就是提取的字符串了;'''
所以,有時候我們需要把讀取到的數(shù)據(jù)進(jìn)行解碼才行!
關(guān)于二進(jìn)制的讀寫總結(jié)
# 總結(jié):
如果是按照二進(jìn)制打開文件的,要寫入或者讀取一定要編碼 解碼。
# 對于二進(jìn)制的讀與寫,要進(jìn)行對應(yīng)結(jié)構(gòu)的編碼與解碼,編碼和解碼用相同的方式才行。中文也可以解析出。
# 寫的時候:str_bytes='I am jiyongjia嘉 !'.encode('utf-8')
# 讀的時候:str2=f2.read().decode('utf-8')
'''
如果不進(jìn)行decode解碼輸出的話會是:b'I am jiyongjia\xe5\x98\x89 !' 它是一個 非字符串,不好操作、
如果使用了decode 解碼再輸出的話,輸出結(jié)果是一個I am jiyongjia嘉 ! 它是一個
'''
方法一:使用pickle庫 來進(jìn)行讀寫
import pickle #引入數(shù)據(jù)持久性模板
#1--使用 pickle 方式寫入進(jìn)去。
mylist = [1,2,3,4,5,6,"jiajia","我是雷鋒"]#把這個list寫入文件4
path = r'E:\[AAA]全棧學(xué)習(xí)python\day3\file4.txt'f= open(path,'wb') #打開
pickle.dump(mylist,f)
f.close()#關(guān)閉
#讀取出來、
f2= open(path,'rb') #打開
templist=pickle.load(f2)print(templist)
f2.close()#關(guān)閉
'''輸出:
[1, 2, 3, 4, 5, 6, 'jiajia', '我是雷鋒']'''
方法二:使用json庫 來進(jìn)行讀寫
說明:
json 文件 非常有用,因為我們往往需要在關(guān)閉程序前把程序所處理得到的數(shù)據(jù)進(jìn)行保存,在下一次打開程序的時候再加載這些數(shù)據(jù),這就要用到j(luò)son。而且 json 數(shù)據(jù)是一種通用格式,通過json 就可以把數(shù)據(jù)打包分享給其他語言的程序員使用了,便于跨平臺操作。
#說明:#json 文件 非常有用,因為我們往往需要在關(guān)閉程序前把程序所處理得到的數(shù)據(jù)進(jìn)行保存,#在下一次打開程序的時候再加載這些數(shù)據(jù),這就要用到j(luò)son。而且 json 數(shù)據(jù)是一種通用格式,#通過json 就可以把數(shù)據(jù)打包分享給其他語言的程序員使用了,便于跨平臺操作。
importjson#1 把列表存入到json 文件 即json.dump
list1=[1,12,3,4,5,6,"嘉嘉","jiajai"]
dict1={"1":"puyhon學(xué)習(xí)",'2':"Java學(xué)習(xí)"}
path= r'E:\[AAA]全棧學(xué)習(xí)python\day3\jsonfile1.json'with open(path,'w') as json_file:
json.dump(list1, json_file)#2 把json文件中的內(nèi)容取出 即json.load
path= r'E:\[AAA]全棧學(xué)習(xí)python\day3\jsonfile1.json'with open(path) as f2:
file=json.load(f2)print("welcome back! 提取內(nèi)容是:",file)
總結(jié)
以上是生活随笔為你收集整理的python文件读写库_【8】python文件的读写方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql三次握手_TCP的三次握手和四
- 下一篇: uniapp保存图片_Uniapp实现保