by 吳刀釣魚
檔案操作中最基本的當然屬于檔案的讀寫操作。當我們利用爬蟲抓取到一堆資料時,就需要進行檔案寫操作,将資料寫入到檔案當中;當我們需要對抓取到的檔案内容進行篩選,擷取有效資訊時,需要對檔案進行讀操作。本文将介紹檔案操作的一些基本内容,助您更高效的處理檔案。
檔案的打開模式多種多樣,就像“條條道路通羅馬”一樣,每一種模式都可以用來打開檔案,但是由于“道路”的不同,它們對于打開後檔案内容的處理方式不一樣。相比來說檔案的關閉模式就簡單得多了。
表格内列出了一些常見的檔案打開模式以及它對于檔案的作用。
模式|描述|
:-😐-|-
b|以二進制模式打開檔案。
+|以讀寫模式打開一個檔案。
r|以隻讀方式打開檔案,打開後檔案的指針将會放在檔案的開頭。
rb|以二進制格式打開一個檔案用于隻讀,檔案指針将會放在檔案的開頭。
r+|以讀寫模式打開一個檔案,檔案指針将會放在檔案的開頭。
rb+|以二進制格式打開一個檔案用于讀寫,檔案指針将會放在檔案的開頭。
w|以寫模式打開一個檔案,如果該檔案已存在則打開檔案,删除原有檔案内容并從開頭開始編輯,如果該檔案不存在,則建立新檔案。
wb|以二進制格式打開一個檔案隻用于寫入,如果該檔案已存在則打開檔案,删除原有檔案内容并從開頭開始編輯,如果該檔案不存在,則建立新檔案。
w+|以讀寫模式打開一個檔案,如果該檔案已存在則打開檔案,删除原有檔案内容并從開頭開始編輯,如果該檔案不存在,則建立新檔案。
wb+|以二進制格式打開一個檔案用于讀寫,如果該檔案已存在則打開檔案,删除原有檔案内容并從開頭開始編輯,如果該檔案不存在,則建立新檔案。
a|以追加模式打開一個檔案,如果該檔案已存在,檔案指針将會放在檔案的結尾,将新内容寫入到已有内容之後,如果該檔案不存在,建立新檔案進行寫入。
ab|以二進制格式打開一個檔案用于追加,如果該檔案已存在,檔案指針将會放在檔案的結尾,将新内容寫入到已有内容之後,如果該檔案不存在,建立新檔案進行寫入。
a+|以追加模式打開一個檔案,如果該檔案已存在,檔案指針将會放在檔案的結尾,将新内容寫入到已有内容之後,如果該檔案不存在,建立新檔案進行寫入。
ab+|以二進制格式打開一個檔案用于追加,如果該檔案已存在,檔案指針将會放在檔案的結尾,将新内容寫入到已有内容之後,如果該檔案不存在,建立新檔案進行寫入。
簡單總結起來就是: r (read)讀取,w (write)寫入,a (add)追加,配上 + 後可讀可寫。
open(file, mode=‘r’, buffering=-1, encoding=None),檔案打開函數,傳回一個 file 對象,進而可以對檔案進行讀寫操作。
file,要通路的檔案名稱,是一個字元串值,比如:'python-100.txt',或者可以包含檔案路徑,即'C:\Users\Desktop\python-100.txt'。
mode,決定了檔案的打開模式,預設是 'r' 隻讀模式。
buffering,如果 buffering 的值被設為 0,就不會有寄存。如果 buffering 的值取 1,通路檔案時會寄存行。如果将 buffering 的值設為大于 1 的整數,表明了這就是的寄存區的緩沖大小。如果取負值,寄存區的緩沖大小則為系統預設。
encoding,對檔案的内容進行編碼,比如采用 'utf-8' 編碼方法。
close(),檔案關閉函數,沒有傳回值,用于關閉一個已打開的檔案,關閉後的檔案不能再進行讀寫操作。
close() 函數沒有參數。
每一個檔案打開 open() 函數必須搭配一個檔案關閉函數 close(),這樣養成一個良好的編碼習慣。
示例:
這種模式下檔案打開之後不需要寫入檔案關閉函數 close(),程式會在執行完 with 結構體中的程式後自動關閉打開的檔案。
當我們打開一個檔案之後,根據需要我們會對檔案内容進行一些操作, Python 當然為我們提供了檔案内容的讀寫方法。
以下表格内列出了一些常用的檔案讀寫方法:
讀寫方法|描述|
read()|一次性将檔案中的内容全部讀取出來,缺點就是檔案過大的話很容易導緻記憶體崩潰。
read(n)|一次讀取 n 個字元,如果再次讀取,會在上一次讀取過後的位置接着去讀取而不是從頭開始讀取, 如果使用的是 rb 模式,則讀取出來的是 n 個位元組。
readline()|一次讀取一行内容,每次讀取出來的内容都以換行符 '\n' 結尾。
readlines()|一次讀取打開檔案的全部内容,傳回一個清單,每一行内容作為元素放到一個列表中,缺點就是檔案内容過大容易出現記憶體崩潰的問題。
write(s)|寫入字元串 s,如果再次寫入,會在上一次寫入的位置末尾繼續寫入。
writelines(s)|寫入字元串或清單 s,如果是清單的話清單中的所有元素必須為 string 類型,如果再次寫入,會在上一次寫入的位置末尾繼續寫入。
定位方法|描述|
tell()|傳回目前檔案讀取指針在什麼位置,按位元組數來确定的。
seek(n)|用于移動檔案讀取指針到指定位置,移動的機關為位元組。
tell() 函數應用示例
seek(offset, whence=0) 函數應用示例
offset,移動偏移的位元組數,如果是負數表示從倒數第幾位開始。
whence,可選參數,預設值為 0。0 代表從檔案開頭開始算偏移量,1 代表從目前位置開始算,2 代表從檔案末尾算起。
本節給大家介紹了 Python 中 檔案操作的基本使用方法,主要是檔案的讀寫操作,可以助您更高效的處理爬蟲擷取到的消息内容。
[1] https://www.cnblogs.com/MayDayTime/p/9157432.html
[2] https://www.runoob.com/python/python-files-io.html
示例代碼:Python-100-days-day93
關注公衆号:python技術,回複"python"一起學習交流

作者:純潔的微笑
出處:www.ityouknow.com
資源:微信搜【純潔的微笑】關注我,回複 【程式員】【面試】【架構師】有我準備的一線程式必備計算機書籍、大廠面試資料和免費電子書。 一共1024G的資料,希望可以幫助大家提升技術和能力。
本文如對您有幫助,還請多幫 【推薦】 下此文。
點我了解:Tooool-程式員一站式導航網站