最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 文件數據讀寫的具體實現

 更新時間:2020年01月24日 10:10:29   作者:大夢三千秋  
這篇文章主要介紹了Python 文件數據讀寫的具體實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

文件數據讀寫

讀寫文件,本質上是請求操作系統(tǒng)打開一個文件對象,然后,通過操作系統(tǒng)提供的接口從這個文件對象中讀取數據(讀文件),或者把數據寫入這個文件對象(寫文件)。

文件讀取

使用 Python 內置 open() 函數,以 rt 的模式讀取文件,如下示例:

>>> f = open('some.txt', 'rt')

這行代碼就表示打開一個文件,若是文件不存在,會拋出 IOError 的異常,并給出詳細的信息提示:

>>> f = open('undefined.txt', 'rt')
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'undefined.txt'

當成功打開文件時,可使用 read() 函數讀取文件的內容:

>>> f.read()
'Hello world!'

當數據讀取完畢后,需要調用 close() 關閉文件。因為文件對象會占用資源,使用完畢后需要及時關閉釋放資源。

>>> f.close()

還有一種方法就是使用 with 語句,給被使用的文件創(chuàng)建一個上下文環(huán)境,這樣文件對象就能夠自動關閉。

>>> with open('some.txt', 'rt') as f:
...   data = f.read()
...

調用 read() 時一次性讀取全部內容,若是文件內容過大,可以使用 read(size) 固定大小循環(huán)讀取,每次最多讀取 size 字節(jié)的內容。readline() 函數,每次讀取一行內容,readlines() 讀取所有內容,但是按行返回 list。三者的使用,可根據實際的需求進行選擇。

二進制文件

讀取二進制的文件,需要使用 rb 的模式打開:

>>> f = open('image.jpg', 'rb')
>>> f.read()
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00...'

從文件中讀取數據,需要注意編碼的問題。當編碼錯誤時,會拋出 UnicodeDecodeError 異常。比如:

>>> f = open('some.txt', 'rt', encoding='ascii')
>>> f.read()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/local/lib/python3.6/encodings/ascii.py", line 26, in decode    
  return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 2: ordinal not in range(128)

這種情況下,通常為讀取文本指定的編碼不正確,需要確認文件編碼是否正確。如果編碼錯誤還是存在的話,可以給 open() 函數傳遞一個可選的 errors 參數來處理這些錯誤。比如:

>>> f = open('some.txt', 'rt', encoding='ascii', errors='replace') 
>>> f.read()
'Un��ic��o��de��'
>>> f = open('some.txt', 'rt', encoding='ascii', errors='ignore') 
>>> f.read()
'Unicode'

使用參數 errors 能夠處理編碼錯誤的問題,但是過程會覺得非常糟糕。這里提倡的是確保使用的是正確的編碼。模棱兩可的時候,使用默認的設置(通常是 UTF-8)。

壓縮文件

讀取 gzip 和 bz2 格式的壓縮文件時,可以使用 gzip 和 bz2 模塊。兩個模塊都為 open() 提供了另外的實現來解決讀取 gzip 和 bz2 兩個格式的壓縮文件的問題。例如讀取壓縮文件,示例如下:

>>> import gzip
>>> with gzip.open('some.gz', 'rt') as f: 
...   text=f.read()
   
>>> import bz2
>>> with bz2.open('some.bz2', 'rt') as f:
...   text=f.read()

文件寫入

文件寫入,同樣需要調用 open() 參數,但是指定的模式為 wt 或者 wb,用以表示寫文本文件或是二進制文件:

>>> f = open('some.txt', 'wt')
>>> f.write('Hello, world!')
13
>>> f.close()

數據寫入完畢,同樣需要調用 close() 關閉文件對象。也可以 with 語句創(chuàng)建上下文,用以正常關閉文件對象。

類似的,寫入壓縮數據時,導入 gzip 或者 bz2 模塊:

>>> import gzip
>>> with gzip.open('some.gz', 'wt') as f: 
...   f.write(text)
   
>>> import bz2
>>> with bz2.open('some.bz2', 'wt') as f:
...   f.write(text)

寫入壓縮數據時,可選參數 compresslevel 可以指定一個壓縮等級。例如:

>>> with gzip.open('some.gz', 'wt', compresslevel=6) as f:
...   f.write(text)

compresslevel 參數默認值為 9,表示最高的壓縮等級。等級越低性能越好,但是壓縮程度也就越低。

使用 w 模式的 open() 函數,若打開的文件在寫入前有數據內容,則會被清除覆蓋。如果是要在已經存在的文件中添加內容的話,使用模式為 at 的 open() 函數。

涉及讀寫文件模式的定義及含義,內容如下:

模式 含義
'r' 讀取數據(默認)
'w' 寫入數據
'x' 文件存在拋出異常,不存在則創(chuàng)建
'a' 追加寫入數據
'b' 二進制模式
't' 文本模式(默認)
'+' 更新文件(讀寫)

具體更詳細的內容可以參考 Python 官方文檔。

參考資料

來源
David M. Beazley;Brian K. Jones.Python Cookbook, 3rd Edtioni.O'Reilly Media.2013.
Luciano Ramalho.Fluent Python.O'Reilly Media.2015.
“2. Built-in Functions”.docs.python.org.Retrieved 20 January 2020.
"gzip — Support for gzip files".docs.python.org.Retrieved 22 January 2020.
"bz2 — Support for bzip2 compression".docs.python.org.Retrieved 22 January 2020.
廖雪峰.“Python 教程”.liaoxuefeng.com.[2020-01-18].

以上為本篇的主要內容。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python實現的密碼強度檢測器示例

    Python實現的密碼強度檢測器示例

    這篇文章主要介紹了Python實現的密碼強度檢測器,結合實例形式分析了Python密碼強度檢測的原理與實現方法,涉及Python字符串運算與轉換、判斷等相關操作技巧,需要的朋友可以參考下
    2017-08-08
  • python實現圖像的隨機增強變換

    python實現圖像的隨機增強變換

    這篇文章主要為大家介紹了如何利用pythons制作一個小工具工具,可以實現圖像的隨機增強變換,可用于分類訓練數據的增強,有需要的可以參考下
    2024-11-11
  • pandas分組排序 如何獲取第二大的數據

    pandas分組排序 如何獲取第二大的數據

    這篇文章主要介紹了pandas分組排序 獲取第二大的數據的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 詳解如何使用SQLAlchemy連接數據庫

    詳解如何使用SQLAlchemy連接數據庫

    這篇文章主要為大家詳細介紹了如何使用 SQLAlchemy 連接數據庫、建立模型、操作表、以及查詢操作表數據等內容,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • Python使用time模塊實現指定時間觸發(fā)器示例

    Python使用time模塊實現指定時間觸發(fā)器示例

    這篇文章主要介紹了Python使用time模塊實現指定時間觸發(fā)器,結合實例形式分析了Python時間相關模塊與方法使用技巧,需要的朋友可以參考下
    2017-05-05
  • python遍歷文件目錄、批量處理同類文件

    python遍歷文件目錄、批量處理同類文件

    這篇文章主要為大家詳細介紹了python遍歷文件目錄、批量處理同類文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python如何檢驗樣本是否服從正態(tài)分布

    Python如何檢驗樣本是否服從正態(tài)分布

    這篇文章主要介紹了Python如何檢驗樣本是否服從正態(tài)分布問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python環(huán)境下安裝opencv庫的方法

    python環(huán)境下安裝opencv庫的方法

    這篇文章主要介紹了python環(huán)境下安裝opencv庫的方法 ,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python利用heapq實現一個優(yōu)先級隊列的方法

    Python利用heapq實現一個優(yōu)先級隊列的方法

    今天小編就為大家分享一篇Python利用heapq實現一個優(yōu)先級隊列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • python使用MQTT給硬件傳輸圖片的實現方法

    python使用MQTT給硬件傳輸圖片的實現方法

    最近因需要用python寫一個微服務來用MQTT給硬件傳輸圖片,其中python用的是flask框架。這篇文章主要介紹了python使用MQTT給硬件傳輸圖片,需要的朋友可以參考下
    2019-05-05

最新評論

蚌埠市| 陇西县| 调兵山市| 永新县| 承德市| 焦作市| 嘉定区| 湘阴县| 攀枝花市| 成安县| 方山县| 靖西县| 舒兰市| 东港市| 科尔| 郎溪县| 新余市| 平原县| 台北县| 禹城市| 卫辉市| 永善县| 会东县| 富源县| 大厂| 通江县| 涡阳县| 襄汾县| 九龙县| 徐汇区| 淳化县| 商河县| 宁明县| 邯郸市| 古蔺县| 桓台县| 探索| 藁城市| 牡丹江市| 紫云| 华宁县|