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

          S系列·刪除文件夾的幾種姿勢

          共 2182字,需瀏覽 5分鐘

           ·

          2022-06-10 03:55

          S系列·刪除文件夾的幾種姿勢

          S又稱水,亦可讀作Small,在日常工作學(xué)習(xí)過程中,偶爾會發(fā)現(xiàn)之前沒有看見的、小的、有趣的操作,或許這些操作對于當(dāng)下的問題解決并無意義,仍然想記錄下來,或許能以單獨(dú)寫成一篇完整的文章,則作為流水賬似的記下。

          系列文章說明:

          S系列·<<文章名稱>>

          平臺:

          • windows 10.0

          • python 3.8

          • pywin32 227 (或者安裝pypiwin32)

          • send2trash 1.5.0

          目的

          將一個包含數(shù)據(jù)文件的目錄刪除。

          刪除姿勢

          以下操作均在windows系統(tǒng)中操作。

          • 姿勢一

          直接在電腦上右擊該文件夾,選擇刪除,或者使Delete按鍵刪除文件,這種方法刪除文件,會將文件轉(zhuǎn)移至回收站,如果需要恢復(fù),點(diǎn)擊還原即可。

          • 姿勢二

          python中使用使用os模塊:

          import?os

          delete_dir?=?r'測試文件夾'
          for?r,?d,?f?in?os.walk(delete_dir,?topdown=False):
          ????for?files?in?f:
          ????????os.remove(os.path.join(r,?files))?#?刪除文件
          ????os.removedirs(r)??#?刪除文件夾,必須為空

          使用os.walk遍歷待刪除文件的內(nèi)容,默認(rèn)topdown=True,先輸出最外層的再輸出內(nèi)層,此時會先將非空的文件夾輸出,而是用os.removedirs刪除非空文件夾會嘗試報錯,將topdown=False,先將內(nèi)層文件逐個輸出并刪除,最后再刪除上層的文件夾,直至全部刪除。

          • 姿勢三

          pathlib模塊:

          from?pathlib?import?Path

          delete_dir?=?Path(r'測試文件夾')
          #?刪除所有文件
          [i.unlink()?for?i?in?delete_dir.rglob('*')?if?i.is_file()]
          #?刪除包含的所有空文件夾
          [i.rmdir()?for?i?in?delete_dir.rglob('*')?if?i.is_dir()]
          #?刪除當(dāng)前文件夾
          delete_dir.rmdir()

          os類似,將文件與文件夾分開刪除,兩次遞歸分別判斷是否為文件或者目錄,并按照對應(yīng)刪除方式刪除,最后刪除當(dāng)前文件夾。

          • 姿勢四

          shutil模塊

          from?shutil?import?rmtree

          delete_dir?=?r'測試文件夾'
          rmtree(delete_dir)

          rmtree遞歸返回該目錄下所有文件及文件夾,并將其刪除,原理同姿勢二,以下為rmtree核心代碼部分:

          rmtree首先判斷刪除方式是否為安全刪除,以安全刪除方式為例,對遞歸結(jié)果進(jìn)行判斷,如果為文件夾,判斷內(nèi)層是否還有文件,如果還有進(jìn)行遞歸,再對遞歸結(jié)果做刪除操作,如果為文件,直接進(jìn)行刪除,此種方式相比姿勢二有了更多對文件狀態(tài)的判斷。

          • send2trash+shell

          上述幾種python方法刪除文件會直接刪除,不會經(jīng)過回收站,如果想類似于姿勢一的操作,可安裝send2trash模塊,將文件轉(zhuǎn)移至回收站。

          pip install send2trash

          pip install pywin32 (或者 pip install pypiwin32)

          import?send2trash

          delete_dir?=?r'測試文件夾'
          send2trash.send2trash(delete_dir)

          win32compywin32包中的一個模塊,調(diào)用shell方法對回收站做處理。

          from?win32com.shell?import?shell,?shellcon

          def?recyclebin_empty(confirm=True,?show_progress=True,?sound=True):
          ????flags?=?0
          ????if?not?confirm:??#?提示框
          ????????flags?|=?shellcon.SHERB_NOCONFIRMATION
          ????if?not?show_progress:??#?刪除進(jìn)度
          ????????flags?|=?shellcon.SHERB_NOPROGRESSUI
          ????if?not?sound:??#?完成提示音
          ????????flags?|=?shellcon.SHERB_NOSOUND
          ????shell.SHEmptyRecycleBin(None,?None,?flags)??

          recyclebin_empty(False,?False,?False)

          定義一個函數(shù),設(shè)置默認(rèn)會顯示清空回收站提示框,顯示進(jìn)度及刪除完提示音。兩個函數(shù)相結(jié)合可以實現(xiàn)姿的操作過程。

          總結(jié)

          本文通過幾種姿勢,對需要刪除的文件進(jìn)行刪除操作,純分享個人感悟,刪除文件基本是有手就行,之前使用電腦偶然抽風(fēng),直接使用shutil.rmtree進(jìn)行刪除偶有卡頓,原以為這種刪除方式很慢,遂上網(wǎng)搜索了一番,而后用pathlib模塊卻能夠快速刪除,正當(dāng)我想分享此事時,我重啟電腦再次運(yùn)行,發(fā)現(xiàn)shutil.rmtree能較快刪除,經(jīng)幾次測試,shutil.rmtree相比pathlib除速度較快,為何那時刪除時間較長原因未知。??


          此山中煙雨,獨(dú)留文人騷客。??


          2022.6.8留


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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  日韩激情小说 | 俺去俺来也www色视频 | 黄色操逼小视频国产无码 | 日韩欧美三级在线观看 | 91福利国产色久麻豆 |