Python基礎知識4:檔案操作,
檔案的知識:開啟檔案、操作檔案、關閉檔案
1、關於開啟檔案:
f.open('text','r') #r代表唯讀
f.open('text','w') #w代表唯寫,先清空源檔案的內容
f.open('text','x') #檔案存在即報錯,檔案不存在則建立檔案,並可寫入內容(即同w)
f.open('text','a')#a代表在源檔案末尾追加內容
案例1:讀檔案內容的程式
f=open('db','r')
data=f.read()
print(data)
f.close()
案例2:encoding限制檔案內容形式
#讀檔案內容出來,如果開啟檔案時出現亂碼,需要看下encoding對應的類型是否真錯
#比如text檔案中有漢字,則必須寫上encoding='utf-8'
f=open('text','r',encoding='utf-8')
data=f.read()
print(data)
f.close()
案例3:加b後,直接以位元組方式讀取檔案,不加b則以字串形式讀取
f=open('db','rb')#當r為rb時,會以位元組方式讀取檔案
data=f.read()
print(data,type(data))
f.close()
案例4:當傳遞內容為字元時,需要通過bytes轉化
f=open('db','ab')#會以位元組方式追加
f.write(bytes("hello",encoding='utf-8'))#當傳遞內容為字元時,需要用bytes轉化
f.close()
案例5:r+即可讀又可寫,同時不會覆蓋檔案,會在末尾追加內容
f=open('db','r+',encoding='utf-8')#即可讀又可寫
data=f.read()
print(data)
f.write("hello")#在末尾覆蓋
f.close()
執行結果:
另外還有a+(實現讀和寫,但寫的時候會永遠在最後追加),w+(實現寫和讀,但會清空源檔案內容後在寫),因此用的最多的是r+
2、關於檔案的操作
seek()#將按位元組形式讀取指標位置,中文代表3個位元組
tell()#擷取當前指標的位置,按位元組形式
案例6:調整指標位置
f=open('db','r+',encoding='utf-8')#即可讀又可寫
data=f.read(1)#如果開啟模型無b,則read按字元讀取,如果有b,則按位元組方式,比如中文會佔3個位元組
print(f.tell())#tell()當前指標所在的位置,無論是否有b,均按位元組形式
f.seek(f.tell())#可調整當前指標的位置
f.write("888")
f.close()
案例7:flush#強刷,當沒有結束程式時,需要把寫的內容強制刷進記憶體
f=open('db','a')
f.write("123")
f.flush()#強制把123內容寫入硬碟中
input("hhh")
案例8:truncate,用來截斷資料
f=open('db','r+',encoding='utf-8')#即可讀又可寫
f.seek(3)#調整到3位元組
f.truncate()#3位元組後的所有內容全部清空
f.close()
其他:readline,僅讀取一行
3、關閉檔案
可以用f.close(),還可以用with執行完自動關閉
with open('db') as f:
input("hhh")
案例9:讀取第一個檔案的前世行,並寫入到第二個檔案
with open('db','r')as f1,open('db2','w')as f2:
times=0
for line in f1:#一行一行的讀取
times+=1
if times<=10:#控制次數
f2.write(line)
else:
break
案例10:修改一個檔案,替換部分內容
with open('db','r')as f1,open('db2','w')as f2:
for line in f1:
new_str=line.replace("aaa","cc")
f2.write(new_str)
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。