最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用Python刪除本地目錄下某一時(shí)間點(diǎn)之前創(chuàng)建的所有文件的實(shí)例

 更新時(shí)間:2017年12月14日 08:28:19   作者:木木卡卡西  
下面小編就為大家分享一篇用Python刪除本地目錄下某一時(shí)間點(diǎn)之前創(chuàng)建的所有文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

因?yàn)楣ぷ髟?,需要定期清理某個(gè)文件夾下面創(chuàng)建時(shí)間超過(guò)1年的所有文件,所以今天集中學(xué)習(xí)了一下Python對(duì)于本地文件及文件夾的操作。網(wǎng)上 這篇文章 簡(jiǎn)明扼要地整理出最常見(jiàn)的os方法,抄襲如下:

os.listdir(dirname):列出dirname下的目錄和文件
os.getcwd():獲得當(dāng)前工作目錄
os.curdir:返回當(dāng)前目錄('.')
os.chdir(dirname):改變工作目錄到dirname
os.path.isdir(name):判斷name是不是一個(gè)目錄,name不是目錄就返回false
os.path.isfile(name):判斷name是不是一個(gè)文件,不存在name也返回false
os.path.exists(name):判斷是否存在文件或目錄name
os.path.getsize(name):獲得文件大小,如果name是目錄返回0L
os.path.abspath(name):獲得絕對(duì)路徑
os.path.normpath(path):規(guī)范path字符串形式
os.path.split(name):分割文件名與目錄(事實(shí)上,如果你完全使用目錄,它也會(huì)將最后一個(gè)目錄作為文件名而分離,同時(shí)它不會(huì)判斷文件或目錄是否存在)
os.path.splitext():分離文件名與擴(kuò)展名
os.path.join(path,name):連接目錄與文件名或目錄
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路徑
os.remove(dir) #dir為要?jiǎng)h除的文件夾或者文件路徑
os.rmdir(path) #path要?jiǎng)h除的目錄的路徑。需要說(shuō)明的是,使用os.rmdir刪除的目錄必須為空目錄,否則函數(shù)出錯(cuò)。
os.path.getmtime(name) #獲取文件的修改時(shí)間
os.stat(path).st_mtime#獲取文件的修改時(shí)間
os.stat(path).st_ctime #獲取文件修改時(shí)間
os.path.getctime(name)#獲取文件的創(chuàng)建時(shí)間

于是我照著這些方法,費(fèi)半天勁,終于寫出了“清理某路徑下所有文件及文件夾”的方法,代碼如下:

import os
dirToBeEmptied = 'D:\_Data\Python\os' #需要清空的文件夾
ds = list(os.walk(dirToBeEmptied)) #獲得所有文件夾的信息列表
dsr = ds[::-1] #反轉(zhuǎn)該列表,從最底層的文件夾開(kāi)始清算
for d in dsr: #遍歷該列表
 print(d) #打印出列表項(xiàng),觀察規(guī)律
 if d[2] != []: #如果該路徑下有文件
  for x in d[2]: #先將文件清理干凈
   os.remove(os.path.join(d[0], x))
for d in dsr: #再次遍歷該列表
 if d[1] != []: #如果該路徑下有子文件夾
  for y in d[1]: #將子文件夾清理干凈
   os.rmdir(os.path.join(d[0], y))

之所以這么麻煩,是因?yàn)?os.rmdir() 有個(gè)毛病,只能刪除“空”文件夾。所以只能從最底層的文件夾開(kāi)始清理,一級(jí)一級(jí)往上,才能清干凈。

后來(lái)想想,應(yīng)該有更簡(jiǎn)便的方法,因?yàn)榍蹇瘴募A是很常見(jiàn)的動(dòng)作。查了Python官方文檔,發(fā)現(xiàn)了os以外的另一個(gè)模塊:shutil(高級(jí)文件操作),竟然有 shutil.rmtree() 的方法,不僅是清空,直接連文件夾都一起刪掉,太兇殘了!

為了“僅僅清空”,我搭配使用 shutil 模塊重寫了代碼:

import shutil, os
os.chdir('d:\_data\python\os') #進(jìn)入要清空的目錄
ds = list(os.listdir()) #獲得該目錄下所有文件或文件夾列表
for d in ds: #遍歷該列表
 if os.path.isfile(d): #如果列表項(xiàng)是文件
  os.remove(d) #直接刪除
 else: #如果不是文件,肯定是文件夾
  shutil.rmtree(d) #也直接刪除

這下可就簡(jiǎn)潔多了。

不過(guò),清空一時(shí)爽,但已經(jīng)偏離我原來(lái)的目的了:我只是想刪除過(guò)期的文件,但文件夾和所有子文件夾都得留著啊。倒也不難,最開(kāi)始的代碼中,第1次遍歷列表就是只刪文件、不刪文件夾。只要再加個(gè)判斷語(yǔ)句,判斷出文件是否過(guò)期,就能達(dá)到目的了。

我要?jiǎng)h除的文件,實(shí)際上是做鏡像備份時(shí),將已從主機(jī)刪除或更改的文件暫時(shí)保存下來(lái),以備恢復(fù)之用。這些文件久了會(huì)越來(lái)越占空間,因此設(shè)定為1年過(guò)期。這些文件有一個(gè)特點(diǎn),就是只會(huì)被復(fù)制過(guò)來(lái)一次,且不會(huì)有任何修改,因此只需要判斷其創(chuàng)建日期就可以。

想著是容易,但萬(wàn)萬(wàn)沒(méi)想到,Python對(duì)時(shí)間的處理這么復(fù)雜!涉及到兩個(gè)模塊:datetime 和 time。有時(shí)間必須重頭系統(tǒng)學(xué)習(xí)一下,但這里,我只關(guān)心現(xiàn)在需要的幾個(gè)方法:

datetime.datetime.now() #獲取當(dāng)前時(shí)間,返回值的格式類似 datetime.datetime(2017, 12, 14, 1, 29, 24, 406538)

datetime.timedelta() #設(shè)定兩個(gè)時(shí)間之間的間隔,用于時(shí)間計(jì)算,可以設(shè)置的單位包括:(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0),默認(rèn)都為0

os.path.getctime() #獲取文件的創(chuàng)建時(shí)間,返回值的格式為一個(gè)巨大的浮點(diǎn)數(shù),為1970年1月1日到這個(gè)創(chuàng)建時(shí)間所歷經(jīng)的秒數(shù)

datetime.datetime.fromtimestamp() #將os.path.getctime() 轉(zhuǎn)換為跟datetime.datetime.now()一樣的格式,以進(jìn)行比較計(jì)算

弄清楚上面這些亂七八糟的之后,就可以寫代碼了:

import os, datetime
dirToBeEmptied = 'D:\_Data\Python\os' #需要清空的文件夾
ds = list(os.walk(dirToBeEmptied)) #獲得所有文件夾的信息列表
delta = datetime.timedelta(days=365) #設(shè)定365天前的文件為過(guò)期
now = datetime.datetime.now() #獲取當(dāng)前時(shí)間
for d in ds: #遍歷該列表
 os.chdir(d[0]) #進(jìn)入本級(jí)路徑,防止找不到文件而報(bào)錯(cuò)
 if d[2] != []: #如果該路徑下有文件
  for x in d[2]: #遍歷這些文件
   ctime = datetime.datetime.fromtimestamp(os.path.getctime(x)) #獲取文件創(chuàng)建時(shí)間
   if ctime < (now-delta): #若創(chuàng)建于delta天前
    os.remove(x) #則刪掉

呼~~~~~~~~~

真夠復(fù)雜的!不知道有沒(méi)有簡(jiǎn)便一點(diǎn)的辦法……

以上這篇用Python刪除本地目錄下某一時(shí)間點(diǎn)之前創(chuàng)建的所有文件的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pycharm找不到解釋器問(wèn)題的解決方案

    pycharm找不到解釋器問(wèn)題的解決方案

    安裝好PyCharm之后,新建或者導(dǎo)入項(xiàng)目碰到找不到解釋器的情況,不用擔(dān)心,追根到底,咱們就是需要找到pycharm*.exe的文件,那么這個(gè)文件在哪里呢?所以本文就給大家介紹一下pycharm找不到解釋器問(wèn)題的解決方案,需要的朋友可以參考下
    2024-04-04
  • Python模擬百度自動(dòng)輸入搜索功能的實(shí)例

    Python模擬百度自動(dòng)輸入搜索功能的實(shí)例

    今天小編就為大家分享一篇Python模擬百度自動(dòng)輸入搜索功能的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python遞歸及尾遞歸優(yōu)化操作實(shí)例分析

    Python遞歸及尾遞歸優(yōu)化操作實(shí)例分析

    這篇文章主要介紹了Python遞歸及尾遞歸優(yōu)化操作,結(jié)合實(shí)例形式分析了Python遞歸及尾遞歸優(yōu)化相關(guān)概念、原理、應(yīng)用與操作技巧,需要的朋友可以參考下
    2020-02-02
  • Python進(jìn)階之多線程的實(shí)現(xiàn)方法總結(jié)

    Python進(jìn)階之多線程的實(shí)現(xiàn)方法總結(jié)

    在python中主要有兩種實(shí)現(xiàn)多線程的方式:通過(guò)threading.Thread?()?方法創(chuàng)建線程和通過(guò)繼承?threading.Thread?類的繼承重寫run方法,接下來(lái)我們分別說(shuō)一下多線程的兩種實(shí)現(xiàn)形式吧
    2023-04-04
  • 淺談keras2 predict和fit_generator的坑

    淺談keras2 predict和fit_generator的坑

    這篇文章主要介紹了淺談keras2 predict和fit_generator的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python入門教程(二)Python快速上手

    Python入門教程(二)Python快速上手

    這篇文章主要介紹了Python入門教程(二)Python快速上手,Python是一門非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • 淺談python常用程序算法

    淺談python常用程序算法

    這篇文章主要介紹了python常用程序算法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 使用IPython來(lái)操作Docker容器的入門指引

    使用IPython來(lái)操作Docker容器的入門指引

    這篇文章主要介紹了使用IPython來(lái)操作Docker容器的方法,包括一些基本的搭建和連接,主要依靠docker-py模塊,需要的朋友可以參考下
    2015-04-04
  • 提升Python效率之使用循環(huán)機(jī)制代替遞歸函數(shù)

    提升Python效率之使用循環(huán)機(jī)制代替遞歸函數(shù)

    這篇文章主要介紹了提升Python效率之使用循環(huán)機(jī)制代替遞歸函數(shù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python爬取APP下載鏈接的實(shí)現(xiàn)方法

    Python爬取APP下載鏈接的實(shí)現(xiàn)方法

    這篇文章主要實(shí)現(xiàn)的是批量下載安卓APP。顯然用手點(diǎn)是不科學(xué)的。于是嘗試用Python寫了一個(gè)半自動(dòng)化的腳本。所謂半自動(dòng)化,就是把下載鏈接批量抓取下來(lái),然后一起貼到迅雷里進(jìn)行下載,這樣可以快速批量下載。有需要的朋友們可以一起看看吧。
    2016-09-09

最新評(píng)論

宝鸡市| 石楼县| 获嘉县| 鄂伦春自治旗| 江油市| 乌海市| 瓦房店市| 乐山市| 饶阳县| 金山区| 朝阳县| 承德市| 枣庄市| 广东省| 大名县| 重庆市| 贡嘎县| 神木县| 远安县| 娄烦县| 临夏市| 米脂县| 莱阳市| 枞阳县| 阳城县| 望城县| 阿荣旗| 云安县| 南城县| 江源县| 西宁市| 绥化市| 拜城县| 绵阳市| 新营市| 鸡西市| 呼图壁县| 丰都县| 舞钢市| 都匀市| 彭泽县|