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

Python基礎(八)

系統(tǒng) 1914 0

今日主要內容

  • 文件操作
    • 文件路徑
    • 打開方式
    • 編碼方式
    • 文件句柄
  • 文件修改

一、文件操作

(一)文件操作的用途

  • 我們運行代碼時產(chǎn)生的數(shù)據(jù)和記錄,存儲在內存中,當程序運行完,產(chǎn)生的數(shù)據(jù)和記錄就會被釋放掉,如果我們需要這個數(shù)據(jù)或記錄以便下次使用,那就需要用文件存儲起來(如商城的購買記錄等)
  • 文件操作用于: 持久化存儲數(shù)據(jù)
  • 文件操作的三步驟:
    • 打開文件
    • 操作文件
    • 關閉文件

(二)文件操作的格式

  • f = open(文件路徑, 打開方式, 編碼方式)

                  
                    f = open("text.txt", mode="r", encoding="utf-8")
    """文件操作"""
    f.close()
                  
                
  • with open(文件路徑, 打開方式, 編碼方式) as f:

    • 以此方式打開文件不需要手動關閉文件,自動關閉
    • 可以打開多個文件
      • with open(...) as f1, open(...) as f2:
                  
                    with open("text.txt", mode="r", encoding="utf-8") as f:
      """文件操作"""
                  
                

(三)文件路徑

  • 文件路徑:文件所在的位置
  • 分為 絕對路徑 相對路徑
  1. 絕對路徑:

    • 從磁盤根目錄一直到文件名的路徑
                  
                    path = "C:\Users\11582\Desktop\筆記\day08"
                  
                
  2. 相對路徑

    • 同一個文件夾下的文件,如果在同一個文件夾,那么相對路徑就是這個文件名,如果在上一層文件夾則需要: ../
                  
                    path = "../裝飾器/測試.txt"
                  
                

    Python基礎(八)_第1張圖片

  3. 轉義:

    • 用兩個 \\ 代表
    • 路徑前加一個r

                        
                          path = r"C:\Users\11582\Desktop\筆記\day08"
                        
                      

(四)打開方式

  • mode可以省略,直接填入打開方式,若不填默認為只讀"r"

  • r 只讀
    w 只寫(清空寫)
    a 追加(追加寫)
    rb 以字節(jié)方式打開文件用于只讀
    wb 以字節(jié)方式打開文件用于只寫(清空寫)
    ab 以字節(jié)方式打開文件用于追加(追加寫)
    r+ 讀寫
    w+ 寫讀(清空寫)
    a+ 追加寫讀(追加寫)
    r+b 以字節(jié)方式打開文件用于讀寫
    w+b 以字節(jié)方式打開文件用于寫讀(清空寫)
    a+b 以字節(jié)方式打開文件用于追加(追加寫)
  1. mode="r"

    • 以只讀方式打開文件
    • 默認參數(shù)為只讀"r"
    • 文件讀取得到的是字符串
                  
                    f = open("text.txt", "r", encoding="utf-8")
    s = f.read()
    f.close()
    print(s)  # 打印文件內容
                  
                
  2. mode="w"

    • 以只寫方式打開文件
    • 文件打開時清空文件,之后寫入內容
    • 若文件不存在創(chuàng)建文件
    • 只能寫入字符串
                  
                    f = open("text.txt", "w", encoding="utf-8")
    f.write("文件操作")
    f.flush()
    f.close()  # 寫入"文件操作"
                  
                
  3. mode="a"

    • 以追加方式打開文件,可以在文件末尾追加寫入內容
                  
                    f = open("text.txt", "a", encoding="utf-8")
    f.write("文件操作")
    f.flush()
    f.close()  # 在文件末尾寫入"文件操作"
                  
                
  4. mode="rb"

    • 以字節(jié)方式打開文件用于只讀
    • 一般用于打開非文本文件,如圖片、音頻、視頻等
    • 以"rb"方式打開文件不能輸入編碼方式,輸入會報錯
                  
                    f = open("LOL.jpg", "rb")
    s = f.read()
    f.close()
    print(s)  # 打印文件內容(二進制碼)
    
                  
                
  5. mode="wb"

    • 以字節(jié)方式打開文件用于只寫
    • 文件打開時清空文件,之后寫入內容
    • 若文件不存在創(chuàng)建文件
    • 只能寫入字符串
                  
                    f = open("LOL.jpg", "rb")
    s = f.read()
    f.close()
    
    f = open("皮膚.png", "wb")
    f.write(s)
    f.flush()
    f.close()
    
                  
                
  6. mode="ab"

    • 以字節(jié)方式打開文件用于追加,可以在文件末尾追加寫入內容
                  
                    f = open("LOL.jpg", "rb")
    s = f.read()
    f.close()
    
    f = open("LOL.jpg", "ab")
    f.write(s)
    f.flush()
    f.close()
    
                  
                
  7. mode="r+"

    • 以讀寫方式打開文件,先讀后寫
    • 無論讀到哪個字符,寫都從文件最后開始寫入
    • 若先寫入,則會覆蓋文件不會清空,按照對應字節(jié)數(shù)覆蓋
                  
                    f = open("text.txt", "r+", encoding="utf-8")
    s = f.read()
    f.write("文件操作")  # 在文件末尾追加"文件操作"
    f.flush()
    f.close()
    print(s)  
    
                  
                
                  
                    f = open("text.txt", "r+", encoding="utf-8")
    f.write("123")  # 將文件中的"文"替換成"123"  一個中文對應三個字節(jié)
    f.flush()
    f.close()
    
                  
                
  8. mode="w+"

    • 以寫讀方式打開文件
    • 因為打開的時候清空文件,無論先寫后讀,還是先讀后寫,都無法讀到內容,所以一般很少用
                  
                    f = open("text.txt", "w+", encoding="utf-8")
    f.write("文件操作")
    f.flush()
    f.close()
    
                  
                
  9. mode="a+"

    • 以追加寫讀方式打開文件
    • 在文件末尾追加
                  
                    f = open("text.txt", "a+", encoding="utf-8")
    s.seek(0)
    s = f.read()
    f.write("文件操作")
    f.flush()
    f.close()
    
                  
                
  10. mode="r+b"

    • 以字節(jié)方式打開文件用于讀寫
  11. mode="w+b"

    • 以字節(jié)方式打開文件用于寫讀
  12. mode="a+b"

    • 以字節(jié)方式打開文件用于追加寫讀

(五)編碼方式

  • 編碼方式?jīng)Q定文件的讀寫以何種方式進行編碼
  • windows使用的編碼方式是GBK(終端)
  • Pycharm使用的是編碼方式是UTF-8
  • 打開方式所有以 字節(jié)打開 打開的都不能填入編碼方式

(六)文件句柄

  • 用來操作文件的媒介,文件操作的所有方法都針對于文件句柄

  • 文件句柄是一個迭代器,可以進行for循環(huán)

  • f.read() 讀取全部內容
    f.readline() 讀取一行內容
    f.readlines() 讀取全部內容
    f.close() 關閉文件
    f.write() 寫入內容
    f.flush() 刷新內容
    f.seek() 移動光標
    f.tell() 獲取光標位置
    f.truncate() 截斷文件
  1. f.read()

    • 讀取文件全部內容
    • 弊端:如果文件過大,導致內存崩潰
    • read(n) 方法可填入?yún)?shù)n,讀取n個字符
                  
                    f = open("text.txt", "r", encoding="utf-8")
    s = f.read(3)  # 讀取前3個字符
    s1 = f.read()  # 讀取剩余全部內容
    f.close()
    
                  
                
  2. f.readline()

    • 讀取文件一行內容
    • 末尾帶一個換行符,可以利用 strip() 刪除
                  
                    f = open("text.txt", "r", encoding="utf-8")
    s = f.readline()  # 讀取文件一行內容
    f.close()
    
                  
                
  3. f.readlines()

    • 讀取文件全部內容,將每一行的內容放在一個列表中
    • 每一行內容為一個字符串,末尾帶一個換行符
                  
                    f = open("text.txt", "r", encoding="utf-8")
    s = f.readlines()  # 讀取文件全部內容,得到一個列表
    f.close()
    
                  
                
  • 注意:文件讀取的結果為字符串類型
  1. f.close()

    • 關閉文件
    • 文件句柄在操作完一定要關閉
                  
                    f = open("text.txt", "r", encoding="utf-8")
    s = f.read()  
    f.close()  # 關閉文件句柄
    
                  
                
  2. f.write()

    • 向文件中寫入內容
    • 若文件存在,先清空文件后寫入(執(zhí)行open的時候就已經(jīng)清空文件了)
    • 若文件不存在,新建文件后寫入
                  
                    f = open("text.txt", "w", encoding="utf-8")
    f.write("文件操作")  # 寫入"文件操作"
    f.flush()
    f.close()  
    
                  
                
  • 注意:文件只能寫入字符串,寫入其他類型數(shù)據(jù)會報錯
  1. f.flush()

    • 刷新緩沖區(qū),立刻寫入磁盤
    • 延申:緩沖區(qū)與緩存
      • 緩沖區(qū):
        • 首先緩沖區(qū)是內存空間的一部分,在內存空間中預留了一定的存儲空間,這些空間用來暫時存儲輸入或輸出的數(shù)據(jù)
        • 緩沖區(qū)的存在是因為硬件間存在速度差(比如內存和CPU之間、CPU和硬盤之間)高速硬件會等待低速硬件,這時需要一個緩沖區(qū)來平衡
      • 緩存:
        • 緩存存在于CPU中,由于CPU運行速度遠大于內存的速度,為了避免頻繁的向內存讀取數(shù)據(jù),將一部分數(shù)據(jù)存在緩存中,CPU需要使用的時候不需要再訪問內存
      • 總結:緩沖區(qū)偏重于寫,緩存偏重于讀
                  
                    f = open("text.txt", "w", encoding="utf-8")
    f.write("文件操作")
    f.flush()  # 刷新緩沖區(qū)
    f.close()  
    
                  
                
  2. f.seek()

    • 移動光標,文件的讀寫依靠光標進行
    • seek() 方法有兩個參數(shù):
      • 第一個參數(shù)為移動到的位置
      • 第二個參數(shù)為光標從那個位置開始移動
        • 0:同開頭開始移動
        • 1:從當前位置移動
        • 2:從結尾開始移動
      • 當?shù)诙€參數(shù)不為0時,第一個參數(shù)必須為0
    • 光標移動的單位為字節(jié),如果文本為中文,移動一個字符需要移動三個字節(jié)
                  
                    f = open("text.txt", "r", encoding="utf-8")
    f.read()
    f.seek(0)  # 光標移動到開頭
    f.read()
    f.close()
    
                  
                
  3. f.tell()

    • 獲取光標當前位置
                  
                    f = open("text.txt", "r", encoding="utf-8")
    f.read()
    f.seek(0)  # 光標移動到開頭
    s1 = f.tell()  # 開頭位置
    f.read()
    s2 = f.tell()  # 結尾位置
    f.close()
    
                  
                
  4. f.truncate()

    • 截斷文件,刪除光標后面所有內容
    • 截斷文件之前必須要移動光標,否以無法截斷
                  
                    f = open("text.txt", "r", encoding="utf-8")
    f.read()
    f.seek(3)  
    f.truncate()  # 第三個字符后面的內容全部被刪除
    f.close()
    
                  
                

二、文件修改

  • 文件修改只能將原文件內容讀取到內存中,將信息修改完畢之后,寫到新的文件中,將原文件刪除,并將新文件重命名成原文件的名字

  • 需要導入os模塊用來刪除文件和重命名文件

                  
                    import os
    
    with open("text.txt", "r", encoding="utf-8") as f1,\
      open("text副本.txt", "w", encoding="utf-8") as f2:
      for line in f1:
          new_line = line.replace("舊內容", "新內容")
          f2.write(new_line)
    os.remove("text.txt")  # 刪除原文件
    os.rename("text副本.txt", "text.txt")  # 重名命成原文件
    
                  
                

更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区三区四区五区中文字幕 | 午夜在线视频观看 | 91专区在线观看 | 99精品视频在线这里只有 | 欧美午夜色视频国产精品 | 免费99热在线观看 | 成人毛片网站 | 精品国产一区二区三区成人 | 美女扒开内裤让男人桶 | 日韩精品真人荷官无码 | 日本一区视频 | 久久2 | 久草成人网 | 一级黄色免费毛片 | 国产h视频在线观看高清 | 国产精品欧美一区二区在线看 | 欧美午夜久久 | 亚洲欧美日本人成在线观看 | 日本黄 色 成 年 人免费观看 | 国产精品98福利小视频 | 最新国产精品 | 我不卡在线观看 | 九九亚洲视频 | 亚洲综合色视频在线观看 | 欧美爱爱一区二区 | 国产精品一区二 | 欧美日韩国产三级 | 成人精品国产 | 五月天黄色网址 | 三级成人在线 | 国产精品国产精品国产专区不卡 | 青娱乐在线免费 | 久久观看午夜精品 | 最新一区二区三区 | 91精品国产综合久久青草 | 久久99精品视频 | 久久一 | 国产精品婷婷久久久久 | 91精品国产综合久久青草 | 久久精品视频16 | avtom影院入口永久在线观看 |