1. 程式人生 > >Python學習筆記系列——讀寫檔案以及敏感詞過濾器的實現

Python學習筆記系列——讀寫檔案以及敏感詞過濾器的實現

一、讀檔案

#開啟檔案,傳入檔名和識別符號,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')