欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python 文件處理

系統 1610 0

文件概述

? 若想將應用程序獲取到的數據永久保存下來,就必須保存于硬盤中,操作系統把復雜的硬件操作封裝成簡單的接口給用戶/應用程序使用,其中文件就是操作系統提供給應用程序來操作硬盤虛擬概念,用戶或應用程序通過操作文件,可以將自己的數據永久保存下來。

  • 文劍操作流程

  1. 打開一個文件,得到一個文件句柄并復制給變量
            
              fp = open('a.txt',mode='r',encoding='utf-8')
            
          
  1. 通過文件句柄對文件進行操作
            
              data = fp.read()
            
          
  1. 關閉文件
            
              fp.colse()
            
          
  • 關閉文件注意事項

? 打開一個文件包含兩部分資源,操作系統級打開的文件+應用程序的變量,在程序操作完畢一個文件后,必須把文件的這兩部分資源一個不落的回收掉,回收方法是:

            
              fp.close()
            
          

? 但是我們經常操作完文件后,會忘記關閉文件,就會導致資源在使用,從而浪費導致程序運行慢等各種原因。

? 這里就可以使用上下文管理方式,去操作。

? 優勢:只要寫一次打開文件,當所屬句柄下的代碼執行完畢,程序結束時,會自動關閉文件,釋放資源

            
              with open('a.txt',mode='r',encoding='utf-8') as fp:
 pass
            
          
  • 文件編碼

? 上面我們看open打開文件的時候,括號里需要指定一些參數,先來講這里的 encoding='utf-8' ,如果打開文件時,沒有指定這個參數,默認會按系統默認的編碼打開這個文件,大多數情況下我們默認的系統編碼都是gbk,如果這個文件當初是以utf-8編碼的,這樣默認打開如果有中文很可能會得到不是你需要的結果,我們也稱之為 亂碼 .

            
              #若不想遇到亂碼問題,文件是什么格式保存的,我們就需要用什么編碼打開,推薦以后默認使用utf-8保存及編寫
f=open('a.txt','r',encoding='utf-8')
            
          
  • 文件的打開模式

          
            文件句柄 = open('文件路徑',模式)
          
        
模式 含義
’r‘ open for reading(default)
'w' open for writing,truncating the file first
'a' open for writing,appending to the end of the file is exists
'b' binary mode
‘t' 文字模式(默認)
‘+' 打開磁盤文件進行更新(讀寫)
‘U' universal newline mode (for backwards compatibility; should not be used in new code)
  1. 打開文件的模式有(默認為文本模式):
            
              r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】
w,只寫模式【不可讀;不存在則創建;存在則清空內容】
a, 之追加寫模式【不可讀;不存在則創建;存在則只追加內容】
            
          
  1. 對于非文本文件,我們只能使用b模式,"b"表示以字節的方式操作(而所有文件也都是以字節的形式存儲的,使用這種模式無需考慮文本文件的字符編碼、圖片文件的 jgp 格式、視頻文件的 avi 格式)
            
              rb 
wb
ab
注:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型,不能指定編碼
"+" 表示可以同時讀寫某個文件
r+, 讀寫【可讀,可寫】
w+,寫讀【可讀,可寫】
a+, 寫讀【可讀,可寫】
x, 只寫模式【不可讀;不存在則創建,存在則報錯】
x+ ,寫讀【可讀,可寫】
xb
            
          
  1. 由于歷史的原因,換行符在不同的系統中有不同模式,比如在 unix 中是一個\n,而在windows中是‘\r\n’,用U模式打開文件,就是支持所有的換行模式,也就說‘\r’ '\n' '\r\n'都可表示換行

t是windows平臺特有的所謂text mode(文本模式),區別在于會自動識別windows平臺的換行符。

            
              Files opened in binary mode (appending 'b' to the mode argument) return contents as bytes objects without any decoding.
b是以二進制的形式來讀文件,但是顯示出來的卻不是0101,而是以字節的形式顯示出來。
一個字節是8位二進制,所以計算機是自動幫你進行了轉換。
請不要誤會b模式是按照字節讀。
            
          
  • 文件的光標移動

read(3)
  1. 文件打開方式為文本時,代表讀取3個字符
  2. 文件打開方式為bytes模式時,代表三個字節,(既是一個中文字符)
其余的文件內光標移動都是以字節為單位如seek,tell,truncate

注意:

  1. seek有三種移動方式0,1,2,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes為單位移動的
  2. truncate是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate要在r+或a或a+等模式下測試效果
  • 文件的修改

文件的數據是存放于硬盤上的,因而只存在覆蓋、不存在修改這么一說,我們平時看到的修改文件,都是模擬出來的效果,具體的說有兩種實現方式:

? 方式一:將硬盤存放的該文件的內容全部加載到內存,在內存中是可以修改的,修改完畢后,再由內存覆蓋到硬盤(word,vim, nodpad++ 等編輯器)

            
              import os

with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:
 data=read_f.read() #全部讀入內存,如果文件很大,會很卡
 data=data.replace('alex','SB') #在內存中完成修改

 write_f.write(data) #一次性寫入新文件

os.remove('a.txt')
os.rename('.a.txt.swap','a.txt') 
            
          

? 方式二:講硬盤存放的該文件的內容一行一行地讀入內存,修改完畢就寫入新文件,最后用新文件覆蓋源文件

            
              import os

with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f:
 for line in read_f:
     line=line.replace('alex','SB')
     write_f.write(line)

os.remove('a.txt')
os.rename('.a.txt.swap','a.txt') 
            
          
  • 練習

  1. 文件a.txt內容:每一行內容分別為商品名字,價錢,個數,求出本次購物花費的總錢數
          
            apple 10 3

tesla 100000 1

mac 3000 2

lenovo 30000 3

chicken 10 3
          
        
  1. 修改文件內容,把文件中的 alex 都替換成SB

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产免费观看一区 | 亚洲国产精品一区二区第一页 | 性做久久久久久免费观看欧美 | 成人在线视频在线观看 | 亚洲午夜精品视频 | 五月激情综合婷婷 | 99久久精品国产一区二区三区 | 国产一区www | 国产成人免费 | 亚洲精品一区二区三区福利 | 色射综合| 亚洲精品久久久久久国产精华液 | 亚洲欧美在线观看一区二区 | 毛片一区二区三区四区 | 波多野结衣三级在线观看 | 日本黄色大片免费看 | 久久穴| 草草草在线视频 | 高清国产一区二区三区四区五区 | 久久2| 成人午夜AV亚洲精品无码网站 | 久久久久一区二区三区 | 亚洲综合在线视频 | 成人精品一区二区三区 | 国产精品99久久久久久www | 一区二区视屏 | 手机在线观看亚洲国产精品 | www.国产福利 | 一道本不卡一区 | 国产精品人人做人人爽 | 精品小视频在线 | 在线播放国产精品 | 欧美va在线视频 | 精品免费国产一区二区三区四区 | 成人福利在线视频免费观看 | 久久视频国产 | 精品久久久一二三区 | 欧美日韩在线视频播放 | 久草中文字 | 无码激情做A爰片毛片A片小说 | 岛国在线123456|