Python學習筆記系列——讀寫檔案以及敏感詞過濾器的實現
阿新 • • 發佈:2018-11-19
一、讀檔案
#開啟檔案,傳入檔名和識別符號,r代表讀 f= open('\\Users\ZC\Desktop\zc.txt','r') #呼叫read方法一次性讀取檔案的全部內容,存入記憶體,用str物件表示 print(f.read()) f.close() #使用with無論程式是否對錯都會最後預設關閉檔案。 with open('\\Users\ZC\Desktop\zc.txt','r') as f: print(f.read()) #使用read()會一次性讀取檔案的所有內容,如果檔案過大,記憶體會爆掉。可以反覆呼叫read(size)方法,每次最多讀取size個位元組的內容。#呼叫readline()可以每次讀取一行內容,呼叫readlines()一次讀取所有內容並按行返回list。 f= open('\\Users\ZC\Desktop\zc.txt','r') for line in f.readlines(): print(line.strip()) #圖片、視訊等二進位制檔案,用rb模式開啟 f= open('\\Users\ZC\Pictures\Camera Roll\8.jpg','rb') print(f.read()) #讀取非UTF-8編碼的文字檔案,需要在open()函式中傳入encoding引數,errors引數表示遇到編碼錯誤如何處理。f = open('\\Users\ZC\Desktop\gbk.txt', 'r', encoding='gbk',errors='ignore') print(f.read())
二、寫檔案
為了防止自己忘記寫close(),一般使用with語句,預設自動關閉檔案。
#呼叫open()函式傳入識別符號,w代表寫入(wb寫入二進位制檔案),如果檔案不存在會自動建立。 f= open('\\Users\ZC\Desktop\zc.txt','w') f.write('遇事不決,可問春風 \n') f.close() f=open('\\Users\ZC\Desktop\zc.txt','r') print(f.read()) #w模式寫入檔案,會直接覆蓋(即相當於刪除後重建),如果想追加,可使用a(append)模式。 f= open('\\Users\ZC\Desktop\zc.txt','a')
作業系統在寫入檔案時,一般不會馬上寫到磁碟,而是放在記憶體中快取,空閒時在寫入。呼叫close(),就是讓作業系統馬上寫入到磁碟中。
所以上面的程式碼在寫入內容之後,在重新開啟,才能呼叫read()檢視檔案的內容,否則會報錯。
關於open()函式識別符號的幾個引數:
'r':讀
'w':寫
'a':追加
'r+' == r+w(可讀可寫,檔案若不存在就報錯(IOError))
'w+' == w+r(可讀可寫,檔案若不存在就建立)
'a+' == a+r(可追加可寫,檔案若不存在就建立)
如果是對應的二進位制檔案,都加上一個b即可。
三、敏感詞過濾器
#建立檔案,寫入內容 def text_create(name,msg): desktop_path = 'C://Users/ZC/Desktop/' full_path = desktop_path + name + '.txt' file = open(full_path,'w') file.write(msg) file.close() #敏感詞為SB,替換成*** def text_filter(word,cencored_word = 'SB',changed_word = '***'): return word.replace(cencored_word,changed_word) #msg經過text_filter過濾之後存入到clean_msg,然後呼叫text_create寫入。 def text_censored_create(name,msg): clean_msg = text_filter(msg) text_create(name,clean_msg) text_censored_create('test','你是個SB')