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')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM