<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python文件操作,看這篇就足夠!

          共 5259字,需瀏覽 11分鐘

           ·

          2021-10-10 09:58

          ↑ 關(guān)注 + 星標(biāo) ,每天學(xué)Python新技能

          后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包

          文 |沐沐
          來(lái)源:GOGO數(shù)據(jù)「ID: mu_science」


          文件的存儲(chǔ)方式


          在計(jì)算機(jī)中,文件是以二進(jìn)制的方式保存在磁盤(pán)上的
          文本文件二進(jìn)制文件

          文本文件可以使用文本編輯軟件查看
          本質(zhì)上還是二進(jìn)制文件

          二進(jìn)制文件保存的內(nèi)容不是給人直接閱讀的,而是提供給其她軟件使用的
          二進(jìn)制文件不能使用文件編輯軟件查看

          文件基本操作

          在計(jì)算機(jī)中要操作文件一共包含三個(gè)步驟:
          1.打開(kāi)文件
          2.讀、寫(xiě)文件

          讀 將文件內(nèi)容讀入內(nèi)容
          寫(xiě) 將內(nèi)存內(nèi)容寫(xiě)入文件

          不同模式打開(kāi)文件的完全列表,更多詳情請(qǐng)點(diǎn)擊原文閱讀

          模式描述
          t文本模式 (默認(rèn))。
          x寫(xiě)模式,新建一個(gè)文件,如果該文件已存在則會(huì)報(bào)錯(cuò)。
          b二進(jìn)制模式。
          +打開(kāi)一個(gè)文件進(jìn)行更新(可讀可寫(xiě))。
          U通用換行模式(不推薦)。
          r以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。
          rb以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。一般用于非文本文件如圖片等。
          r+打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。
          rb+以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。一般用于非文本文件如圖片等。
          w打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。
          wb以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。一般用于非文本文件如圖片等。
          w+打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。
          wb+以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。一般用于非文本文件如圖片等。
          a打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
          ab以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
          a+打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。
          ab+以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。


           文件打開(kāi)模式有很多,但是我們實(shí)際用到的就只有六種。

          我們總結(jié)一下主要用到的是下面六種。


          模式可做操作若文件不存在是否覆蓋文件原來(lái)內(nèi)容
          r只讀報(bào)錯(cuò)——
          r+可讀、可寫(xiě)報(bào)錯(cuò)
          w只寫(xiě)創(chuàng)建
          w+ 可讀、可寫(xiě)創(chuàng)建
           
          a  只寫(xiě)創(chuàng)建否,追加寫(xiě)
          a+可讀、可寫(xiě)創(chuàng)建否,追加寫(xiě)


          只讀模式打開(kāi)文件——只讀(r)


          # 1.只讀模式打開(kāi)文件
          file = open('read.txt')

          # 2. 讀取文件內(nèi)容
          text = file.read()
          print(text)

          # 3.關(guān)閉文件
          file.close()

          '''
          Hello world
          123456
          python
          '''

          文件若不存在報(bào)錯(cuò):




          讀寫(xiě)模式打開(kāi)文件——讀寫(xiě)模式(r+)


          # 1.打開(kāi)文件
          f = open('read.txt''r+')

          # 2. 寫(xiě)入文件并且讀取文件內(nèi)容
          f.write('666666')
          text = f.read()
          print(text)

          # 3.關(guān)閉文件
          f.close()

          '''
          world
          123456
          python
          666666666666
          '''


          數(shù)據(jù)寫(xiě)入之前:




          數(shù)據(jù)寫(xiě)入之后:


          會(huì)替換掉相同長(zhǎng)度的內(nèi)容


          文件若不存在報(bào)錯(cuò):





          寫(xiě)模式打開(kāi)文件——寫(xiě)模式(w)


          # 1.只寫(xiě)模式打開(kāi)文件
          f = open('read.txt''w')

          # 2. 寫(xiě)入文件
          f.write('abcdefg')

          # 3.關(guān)閉文件
          f.close()
          print('數(shù)據(jù)寫(xiě)入完畢!')
          '''
          數(shù)據(jù)寫(xiě)入完畢!
          '''


          數(shù)據(jù)寫(xiě)入之前:




          數(shù)據(jù)寫(xiě)入之后:




          這種操作會(huì)刪除原來(lái)的文件內(nèi)容,
          重新寫(xiě)入Python,

          并且把光標(biāo)放在文件最開(kāi)始。


          若文件不存在,系統(tǒng)會(huì)創(chuàng)建該文件夾并重新寫(xiě)入內(nèi)容



          讀寫(xiě)模式打開(kāi)文件——讀寫(xiě)模式(w+)


          # 1.讀寫(xiě)模式打開(kāi)文件
          f = open('read.txt''w+')

          # 2. 寫(xiě)入文件
          for i in f:
              print(i)
          f.write('python! ')

          # 3.關(guān)閉文件
          f.close()
          print('數(shù)據(jù)寫(xiě)入完畢!')
          '''
          數(shù)據(jù)寫(xiě)入完畢!
          '''


          數(shù)據(jù)寫(xiě)入之前:




          數(shù)據(jù)寫(xiě)入之后:



          這種操作會(huì)刪除原來(lái)的文件內(nèi)容,重新寫(xiě)入Python,

          并且把光標(biāo)放在文件最開(kāi)始。


          若文件不存在,系統(tǒng)會(huì)創(chuàng)建該文件夾并重新寫(xiě)入內(nèi)容



          利用這個(gè)原理所以文件寫(xiě)模式(w)、讀寫(xiě)模式(w+)還可以用作刪除文件內(nèi)容。


          因?yàn)樗麄冋麄€(gè)工作原理就是把文件原來(lái)的內(nèi)容刪除,然后寫(xiě)入新的內(nèi)容。

          如果我們寫(xiě)入的內(nèi)容為空,那么不就是刪除文件內(nèi)容。


          # 1.讀寫(xiě)模式打開(kāi)文件
          f = open('read.txt''w+')

          # 3.關(guān)閉文件
          f.close()
          print('什么都不執(zhí)行!')
          '''
          什么都不執(zhí)行!
          '''

          數(shù)據(jù)寫(xiě)入之前:



          數(shù)據(jù)寫(xiě)入之后





          寫(xiě)模式打開(kāi)文件(追加內(nèi)容)——寫(xiě)模式(a)



          '''
          # 1.寫(xiě)模式打開(kāi)文件
          f = open('read.txt', 'a')

          # 2. 寫(xiě)入文件內(nèi)容
          f.write('ppppppppppppp')

          # 3.關(guān)閉文件
          f.close()
          print('代碼執(zhí)行結(jié)束!')
          '''

          代碼執(zhí)行結(jié)束!
          '''


          數(shù)據(jù)寫(xiě)入之前:



          數(shù)據(jù)寫(xiě)入之后



          可以看到是在原先內(nèi)容的基礎(chǔ)上在文末追加新的內(nèi)容!


          若文件不存在,系統(tǒng)會(huì)創(chuàng)建新的文件夾并寫(xiě)入內(nèi)容




          讀寫(xiě)模式打開(kāi)文件(追加內(nèi)容)——讀寫(xiě)模式(a)



          # 1.讀寫(xiě)模式打開(kāi)文件
          f = open('read.txt''a+')

          # 2. 寫(xiě)入文件內(nèi)容
          f.write('WWWWWWWWW')

          # 3.關(guān)閉文件
          f.close()
          print('代碼執(zhí)行結(jié)束!')
          '''
          代碼執(zhí)行結(jié)束!
          '''


          數(shù)據(jù)寫(xiě)入之前:



          數(shù)據(jù)寫(xiě)入之后



          可以看到是在原先內(nèi)容的基礎(chǔ)上在文末追加新的內(nèi)容!


          若文件不存在,系統(tǒng)會(huì)創(chuàng)建新的文件夾并寫(xiě)入內(nèi)容




          二進(jìn)制模式打開(kāi)文件


          我們看到了在文件打開(kāi)模式中有以下模式:rb、wb……有這種帶 b 的。


          什么意思呢?

          就是用二進(jìn)制的方式打開(kāi)文件。


          # 1.讀寫(xiě)模式打開(kāi)文件
          f = open('img.png')

          # 2. 寫(xiě)入文件內(nèi)容
          for i in f:
              print(i)
          print('代碼執(zhí)行結(jié)束!')

          # 3.關(guān)閉文件
          f.close()

          '''
          UnicodeDecodeError: 'gbk' codec can't decode byte 0xb8 in position 19: illegal multibyte sequence
          '''


          很明顯,我們出現(xiàn)了以下錯(cuò)誤:


          UnicodeDecodeError: 'gbk' codec can't decode byte 0x82 in position 0: incomplete multibyte sequence


          主要原因是因?yàn)榫幋a的問(wèn)題,可能是因?yàn)?x82這個(gè)字節(jié)在gbk編碼中沒(méi)有這個(gè)字符,

          可能原字符是兩個(gè)字節(jié),在gbk里被解析成了一個(gè)字節(jié),導(dǎo)致字符不存在。


          這就是我們文件打開(kāi)方式需要使用二進(jìn)制讀取的原因。


          # 1.讀寫(xiě)模式打開(kāi)文件
          f = open('img.png''rb')

          # 2. 寫(xiě)入文件內(nèi)容
          for i in f:
              print(i)
          print('代碼執(zhí)行結(jié)束!')

          # 3.關(guān)閉文件
          f.close()

          '''
          代碼執(zhí)行結(jié)束!
          '''




          文件操作


          open 函數(shù)負(fù)責(zé)打開(kāi)文件,并且返回文件對(duì)象

          read /write / close 三個(gè)方法都需要通過(guò)文件對(duì)象 來(lái)調(diào)用


          序號(hào)函數(shù)/方法說(shuō)明
          1open打開(kāi)文件,并且返回文件操作對(duì)象
          2read將文件內(nèi)容讀取到內(nèi)存
          3write將指定內(nèi)容寫(xiě)入文件
          4close關(guān)閉文件


          # 1.打開(kāi)文件
          file = open("read.txt")

          # 2. 讀取文件內(nèi)容
          text = file.read()
          print(text)

          # 3.關(guān)閉文件
          file.close()



          文件和文件夾的操作


          在Python中?件和?件夾的操作要借助os模塊??的相關(guān)功能,

          具體步驟如下:


          導(dǎo)?os模塊

          import os


          使? os 模塊相關(guān)功能


          1、文件重命名

          os.rename(?標(biāo)?件名, 新?件名)
          import os

          # 重命名文件
          os.rename('read.txt''new_read.txt')
          print('重命名成功!')

          '''
          重命名成功!
          '''


          2、刪除文件

          os.remove(?標(biāo)?件名)
          import os
          # 刪除文件
          os.remove('new_read.txt')
          print('刪除成功!')
          '''
          刪除成功!
          '''


          3、創(chuàng)建文件夾

          os.mkdir(?件夾名字)
          import os

          # 創(chuàng)建文件夾
          os.mkdir('read.txt')
          print('新文件夾創(chuàng)建成功!')
          '''
          新文件夾創(chuàng)建成功!
          '''



          4、刪除文件夾

          os.rmdir(?件夾名字) 
          import os

          # 刪除文件夾
          os.rmdir('read.txt')
          print('文件刪除成功!')
          '''
          文件刪除成功!
          '''


          5、獲取當(dāng)前目錄

          os.getcwd()
          import os

          print(os.getcwd())
          '''
          E:\python\project++\文件操作
          '''


          6、改變默認(rèn)目錄

          os.chdir(?錄)
          import os

          os.chdir('E:\python\project++')
          print(os.getcwd())
          '''
          E:\python\project++
          '''


          7、獲取目錄列表

          os.listdir(?錄)
          import os

          print(os.listdir('E:\python\project++'))
          '''
          ['.idea', 'college', 'Daily test', 'mult_xiangqin', 'pandas技巧', 'travel_summer', '動(dòng)圖獲取', '匿名函數(shù)', '打針', '文件操作', '漢服小姐姐', '貓眼_動(dòng)態(tài)網(wǎng)站', '王思聰語(yǔ)錄', '瓜子二手車', '網(wǎng)易文胸', '騰訊招聘', '萌妹子', '虎牙']
          '''




          總結(jié)



          1. 本文詳細(xì)介紹了如何用Python操作文件以及文件夾,
          有興趣的讀者可以嘗試自己動(dòng)手練習(xí)一下。

          2. 本文僅供讀者學(xué)習(xí)使用,不做其他用途!

          推薦閱讀

          1. 140篇!Python 數(shù)據(jù)科學(xué)實(shí)戰(zhàn)項(xiàng)目總結(jié).pdf

          2. 人人都要學(xué) Python 的時(shí)代過(guò)去了!

          3. 知乎:電腦長(zhǎng)時(shí)間不關(guān)機(jī)會(huì)縮短電腦壽命嗎?



          瀏覽 36
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产高清卡一卡二 | 国产特级黄色 | 天天撸日日干 | 在线观看a网址 | 久久三级免费 |