欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Python中的文件操作

 更新時間:2021年01月14日 16:00:12   作者:Leslie-x  
這篇文章主要介紹了Python中文件操作的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

一:文件的打開模式

了解過字符編碼都知道,文件都是以某一種標(biāo)準(zhǔn)編碼成二進制存在硬盤里的,在文件的默認(rèn)打開模式下f = open('a.txt','rt',encoding='utf-8') 其中的t表示是以文本模式打開文件,在應(yīng)用程序給操作系統(tǒng)發(fā)送數(shù)據(jù)請求后,操作系統(tǒng)在硬盤讀取二進制編碼,然后返還給應(yīng)用程序,通過open方法,將編碼解碼成我們看到的字符;如果是以b模式打開文件的話,open方法不會對操作系統(tǒng)返回的二進制數(shù)據(jù)作處理,而是直接打印。

f = open('a.txt','rt',encoding='utf-8') 

其中的t表示是以文本模式打開文件,在應(yīng)用程序給操作系統(tǒng)發(fā)送數(shù)據(jù)請求后,操作系統(tǒng)在硬盤讀取二進制編碼,然后返還給應(yīng)用程序,通過open方法,將編碼解碼成我們看到的字符,那么在b模式下打開文件,操作系統(tǒng)返還直接是一串二進制數(shù)字

文件的三種打開方式:

只讀模式:‘r'

只寫方式:'w'

追加模式:'a'

以字節(jié)模式打開文件的話,需要注意:

一定要寫上‘b',只能以rb,wb,ab這種形式打開文件,不能省略‘b'。

f = open('a.txt','rb')  
f = open('a.txt','wb') 
f = open('a.txt','ab') 
#錯誤寫法
f = open('a.txt','r') #未注明以b模式打開,這種寫法是默認(rèn)文本模式打開 
f = open('a.txt','rb',encode = 'utf-8') #b模式打開,不能傳入編碼方式

字節(jié)模式下讀寫都是以bytes為單位的。如果想寫入字符,需要編碼后以字節(jié)類型寫入

f = open('a.txt','wb')
f.write('你哈'.encode('utf-8'))

注意:對于非文本文件,我們只能使用字節(jié)模式,"b"表示以字節(jié)的方式操作(而所有文件也都是以字節(jié)的形式存儲的,使用這種模式無需考慮文本文件的字符編碼、圖片文件的jgp格式、視頻文件的avi格式)

二:字節(jié)模式下的操作

字節(jié)模式打開非文本文件

with open('1.jpg', 'rb') as f: # 以只讀模式打開文件
  data = f.read()       # 讀取文件全部內(nèi)容,并賦值給變量data
print(data)           # 打印變量,我們得到是b'\xff\xd8\xff\xe0\x00這種形式的結(jié)果
print(type(data))        # 變量的類型<class 'bytes'>

with open('1.jpg','rb') as f:
    data = f.read()
print(type(data))
print(data.decode('utf-8'))   #將讀取的編碼以utf-8標(biāo)準(zhǔn)解碼
                 #圖片文件編碼方式不是utf-8,所以不能解碼,程序報錯

以字節(jié)模式打開文本文件:

with open('db.txt', 'rb') as f: 
  data = f.read()
print(data)         # 打印出來的是一串二進制數(shù)
print(data.decode('utf-8')) # 把二進制數(shù)用utf-8標(biāo)準(zhǔn)解碼
print(type(data))      # 可以在屏幕上顯示人類能看懂的字符了

with open('db.txt', 'wb') as f:
  f.write('你好啊\n'.encode('utf -8'))

在以字節(jié)打開文件時,文件的操作都要基于二進制進行了.

三:文件的修改  

文件的修改并不是我們直觀感受上的擦除重新寫上,基于硬盤的特性,任何文件的修改操作都是新內(nèi)容對原內(nèi)容的覆蓋。修改的概念存在于內(nèi)存中,當(dāng)應(yīng)用程序啟動,請求操作系統(tǒng)從硬盤中讀取數(shù)據(jù),讀取的數(shù)據(jù)運行在內(nèi)存上,這時,我們在應(yīng)用程序上的操作修改類內(nèi)存上的數(shù)據(jù)內(nèi)容,但是并不影響到硬盤的數(shù)據(jù)。當(dāng)我們點擊保存時,新的數(shù)據(jù)會將原數(shù)據(jù)覆蓋。這時,才完成了文件的修改。

修改文件方式一:
  1:先把文件內(nèi)容全部讀取
  2:在內(nèi)存中修改
  3:把修改好的內(nèi)容覆蓋寫入到硬盤上

with open("db.txt", "r", encoding="utf-8") as f:  # 打開文件
  data = f.read()                # 讀取文件全部內(nèi)容
  data = data.replace("你好啊:", "======")    # 修改文件內(nèi)容
  
with open("db.txt", "w", encoding="utf-8") as f:  # 以‘w'模式打開,清空文件
  f.write(data)                 # 把修改后的數(shù)據(jù)寫入

修改文件方式二:

  1:以讀的方式打開源文件
  2:以寫的方式打開一個新文件

import os # 引入os模塊

with open('a.txt', 'r', encoding='utf-8') as read_f, \
    open('new.txt', 'w', encoding='utf-8') as new_f: # 同時打開文件
  for line in read_f:                  # 循環(huán)原文件內(nèi)容
    if '你好啊' in line:
      line = line.replace('你好啊', '哈哈哈哈哈哈') # 替換源文件內(nèi)容
    new_f.write(line)                # 把原文件循環(huán)出來的內(nèi)容寫入到新文件中,
    
os.remove('a.txt')                   # 調(diào)用OS模塊功能刪除原文件
os.rename('new.txt', 'a.txt')              # 重命名新文件

以上就是詳解Python中的文件操作的詳細(xì)內(nèi)容,更多關(guān)于python 文件操作的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Python中的數(shù)據(jù)類型

    淺談Python中的數(shù)據(jù)類型

    Python很重要的的那幾個數(shù)據(jù)類型:字符串,列表,字典,元組,經(jīng)常有網(wǎng)友問他們之間重要的區(qū)別的是什么?能否舉幾個例子來說明下!下嘛我們就來探討下。
    2015-05-05
  • Python中title()方法的使用簡介

    Python中title()方法的使用簡介

    這篇文章主要介紹了Python中title()方法的使用簡介,是Python入門中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • Python?pandas?DataFrame基礎(chǔ)運算及空值填充詳解

    Python?pandas?DataFrame基礎(chǔ)運算及空值填充詳解

    pandas除了可以drop含有空值的數(shù)據(jù)之外,當(dāng)然也可以用來填充空值,下面這篇文章主要給大家介紹了關(guān)于Python?pandas?DataFrame基礎(chǔ)運算及空值填充的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • python自動化測試之如何解析excel文件

    python自動化測試之如何解析excel文件

    這篇文章主要介紹了python自動化測試之如何解析excel文件,今天我們就把不同模塊處理excel文件的方法做個總結(jié),直接做封裝,方便我們以后直接使用,增加工作效率。,需要的朋友可以參考下
    2019-06-06
  • Python 統(tǒng)計位數(shù)為偶數(shù)的數(shù)字代碼詳解

    Python 統(tǒng)計位數(shù)為偶數(shù)的數(shù)字代碼詳解

    這篇文章主要介紹了Python 統(tǒng)計位數(shù)為偶數(shù)的數(shù)字,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Django模型中字段屬性choice使用說明

    Django模型中字段屬性choice使用說明

    這篇文章主要介紹了Django模型中字段屬性choice使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 基于Python實現(xiàn)多圖繪制系統(tǒng)

    基于Python實現(xiàn)多圖繪制系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實現(xiàn)一個簡單的多圖繪制系統(tǒng),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • Python圖像處理之gif動態(tài)圖的解析與合成操作詳解

    Python圖像處理之gif動態(tài)圖的解析與合成操作詳解

    這篇文章主要介紹了Python圖像處理之gif動態(tài)圖的解析與合成操作,結(jié)合實例形式分析了Python基于PIL模塊解析gif文件,以及基于imageio庫合成gif文件的相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • win7下python3.6安裝配置方法圖文教程

    win7下python3.6安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了win7下python3.6安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Tornado協(xié)程在python2.7如何返回值(實現(xiàn)方法)

    Tornado協(xié)程在python2.7如何返回值(實現(xiàn)方法)

    下面小編就為大家?guī)硪黄猅ornado協(xié)程在python2.7如何返回值(實現(xiàn)方法)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論