<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>

          shutil模塊,為什么說它是os模塊的兄弟模塊?

          共 3574字,需瀏覽 8分鐘

           ·

          2020-09-28 18:16

          本文大綱

          os模塊是Python標(biāo)準(zhǔn)庫中一個(gè)重要的模塊,里面提供了對目錄和文件的一般常用操作。而Python另外一個(gè)標(biāo)準(zhǔn)庫——shutil模塊,它作為os模塊的補(bǔ)充,提供了復(fù)制、移動(dòng)、刪除、壓縮、解壓等操作,這些 os 模塊中一般是沒有提供的。但是需要注意的是:shutil模塊對壓縮包的處理是調(diào)用ZipFileTarFile這兩個(gè)模塊來進(jìn)行的。

          知識串講

          本文所使用的素材,都是基于以下2個(gè)文件夾,其中一個(gè)文件夾為空。

          1)模塊導(dǎo)入

          import?shutil

          2)復(fù)制文件

          • 函數(shù):shutil.copy(src,dst)
          • 含義:復(fù)制文件;
          • 參數(shù):src表示源文件,dst表示目標(biāo)文件夾;
          • 注意:當(dāng)移動(dòng)到一個(gè)不存在的“目標(biāo)文件夾”,系統(tǒng)會(huì)將這個(gè)不存在的“目標(biāo)文件夾”識別為新的文件夾,而不會(huì)報(bào)錯(cuò);
          #?1.將a表的“data.txt”移動(dòng)到b表
          src?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\data.txt"
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b"

          shutil.copy(src,dst)
          ------------------------------------------------------------
          #?2.將a表的“data.txt”移動(dòng)到b表,并重新命名為“new_data.txt”
          src?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\data.txt"
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b\new_data.txt"

          shutil.copy(src,dst)
          ------------------------------------------------------------
          #?3.將a表的“data.txt”移動(dòng)到“不存在”的文件夾
          src?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\data.txt"
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c"

          shutil.copy(src,dst)
          """
          注意:對于情況3,系統(tǒng)會(huì)默認(rèn)將“test_shutil_c”識別為文件名,而不是按照我們認(rèn)為的,移動(dòng)到一個(gè)新的不存在的文件夾。
          """

          結(jié)果如下:

          3)復(fù)制文件夾

          • 函數(shù):shutil.copytree(src,dst)
          • 含義:復(fù)制文件夾;
          • 參數(shù):src表示源文件夾,dst表示目標(biāo)文件夾;
          • 注意:這里只能是移動(dòng)到一個(gè)空文件夾,而不能是包含其他文件的非空文件夾,否則會(huì)報(bào)錯(cuò)PermissionError;
          ① 如果目標(biāo)文件夾中存在其他文件,會(huì)報(bào)錯(cuò);
          #?將a文件夾移動(dòng)到b文件夾,由于前面的操作,此時(shí)b文件夾中已經(jīng)有其他文件
          src?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a"
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b"

          shutil.copytree(src,dst)

          結(jié)果如下:

          ② 如果目標(biāo)文件夾不存在,則會(huì)自動(dòng)創(chuàng)建;
          #?c文件夾原本是不存在的,我們使用了下方的代碼,會(huì)自動(dòng)創(chuàng)建該文件夾
          src?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a"
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c"

          shutil.copytree(src,dst)

          結(jié)果如下:

          4)移動(dòng)文件或文件夾

          • ?函數(shù):shutil.move(src,dst)
          • 含義:移動(dòng)文件/文件夾;
          • 參數(shù):src表示源文件/文件夾,dst表示目標(biāo)文件夾;
          • 注意:文件/文件夾一旦被移動(dòng)了,原來位置的文件/文件夾就沒了。目標(biāo)文件夾不存在時(shí),相當(dāng)于文件/文件夾“重命名”。;
          #?將當(dāng)前工作目錄下的“a.xlsx”文件,移動(dòng)到a文件夾下
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a"
          shutil.move("a.xlsx",dst)
          ----------------------------------------------------------------
          #?將a文件夾下的“a.xlsx”文件,移動(dòng)到b文件夾中,并重新命名為“aa.xlsx”
          src?=?r"C:/Users/黃偉/Desktop/publish/os模塊/test_shutil_a\a.xlsx"
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_b\aa.xlsx"
          shutil.move(src,dst)

          結(jié)果如下:

          注意:移動(dòng)文件夾操作類似,我這里就不贅述了,自行下去學(xué)習(xí)。

          5)刪除文件夾(慎用)

          • 函數(shù):shutil.rmtree(src)
          • 含義:刪除文件夾;
          • 參數(shù):src表示源文件夾;
          • 注意:區(qū)別這里和os模塊中remove()、rmdir()的用法,remove()方法只能刪除某個(gè)文件,mdir()只能刪除某個(gè)空文件夾。但是shutil模塊中的rmtree()可以遞歸徹底刪除非空文件夾;
          #?將c文件夾徹底刪除
          src?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_c"
          shutil.rmtree(src)

          結(jié)果如下:

          6)創(chuàng)建和解壓壓縮包

          • zipobj.write():創(chuàng)建一個(gè)壓縮包;
          • zipobj.namelist():讀取壓縮包中的文件信息;
          • zipobj.extract():將壓縮包中的單個(gè)文件,解壓出來;
          • zipobj.extractall():將壓縮包中所有文件,解壓出來;
          • 注意1:shutil模塊對壓縮包的處理是調(diào)用ZipFile和TarFile這兩個(gè)模塊來進(jìn)行的,因此需要導(dǎo)入這兩個(gè)模塊;
          • 注意2:這里說的壓縮包,指的是“.zip”格式的壓縮包;
          ① 創(chuàng)建一個(gè)壓縮包
          import?zipfile
          import?os
          file_list?=?os.listdir(os.getcwd())
          #?將上述所有文件,進(jìn)行打包,使用“w”
          with?zipfile.ZipFile(r"我創(chuàng)建的壓縮包.zip",?"w")?as?zipobj:
          ????for?file?in?file_list:
          ????????zipobj.write(file)

          結(jié)果如下:

          ② 讀取壓縮包中的文件信息
          import?zipfile

          with?zipfile.ZipFile("我創(chuàng)建的壓縮包.zip",?"r")?as?zipobj:
          ????print(zipobj.namelist())

          結(jié)果如下:

          ③ 將壓縮包中的單個(gè)文件,解壓出來
          • 注意:目標(biāo)文件夾不存在,會(huì)自動(dòng)創(chuàng)建;
          import?zipfile
          #?將壓縮包中的“test.ipynb”文件,單獨(dú)解壓到a文件夾下
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a"
          with?zipfile.ZipFile("我創(chuàng)建的壓縮包.zip",?"r")?as?zipobj:
          ????zipobj.extract("test.ipynb",dst)

          結(jié)果如下:

          ④ 將壓縮包中所有文件,解壓出來;
          • 注意:目標(biāo)文件夾不存在,會(huì)自動(dòng)創(chuàng)建;
          import?zipfile
          #?將壓縮包中的所有文件,解壓到d文件夾下
          dst?=?r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_d"
          with?zipfile.ZipFile("我創(chuàng)建的壓縮包.zip",?"r")?as?zipobj:
          ????zipobj.extractall(dst)

          結(jié)果如下:


          由于微信平臺算法改版,公號內(nèi)容將不再以時(shí)間排序展示,如果大家想第一時(shí)間看到我們的推送,強(qiáng)烈建議星標(biāo)我們和給我們多點(diǎn)點(diǎn)【在看】。星標(biāo)具體步驟為:


          (1)點(diǎn)擊頁面最上方“小詹學(xué)Python”,進(jìn)入公眾號主頁。


          (2)點(diǎn)擊右上角的小點(diǎn)點(diǎn),在彈出頁面點(diǎn)擊“設(shè)為星標(biāo)”,就可以啦。


          感謝支持,比心。

          瀏覽 57
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  成人黄色免费观看 | 亚洲 小说区 图片区 都市 | 爱搞在线 | 欧美怡红院视频 | 人人摸人人操人人摸 |