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

Python刪除指定目錄下過期文件的2個腳本分享

 更新時間:2014年04月10日 08:54:26   作者:  
這篇文章主要介紹了Python刪除指定目錄下過期文件2個腳本分享,可以用在如刪除指定日期前的日志文件,需要的朋友可以參考下

腳本1:

這兩天用python寫了一個刪除指定目錄下過期時間的腳本。也可能是我初學(xué)python,對python還不夠熟習(xí),總覺得這個腳本用shell寫應(yīng)該更簡單也更容易些。
就功能上來說,該腳本已經(jīng)實現(xiàn)了我想要的效果,不過該腳本還不夠通用性,還有更多可以完善的地方。目前該腳本在python2.4下運行良好。同時,我在腳本中加入了對python版本的判斷,理論上2.7下也應(yīng)該可以正常使用。有環(huán)境的朋友可以幫忙測試一下。
該腳本不完善的地方在于,只能支持一級目錄下的文件刪除,還不支持目錄遞歸。同時過期文件的定義只能按week來做。

Python代碼:

復(fù)制代碼 代碼如下:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
import sys
import os
import time,datetime

# 定義需要刪除文件的目錄
dir = '/data/webbak/'
# 被刪除文件寫入日志文件
logdir = '/var/log'
logfile = os.path.join(logdir, 'delete.log')

# 獲取當(dāng)前系統(tǒng)python版本
ver = sys.version
ver = ver.split(' ')
ver = ver[0]

# 將"Wed Jul  4 13:25:59 2012"格式的時間轉(zhuǎn)成“2012-07-02 14:50:15”格式的時間
# version是當(dāng)前系統(tǒng)python版本號
# time是"Wed Jul  4 13:25:59 2012"格式的時間
# 函數(shù)返回"2012-07-02 14:50:15"格式的時間
def string2time(str_time, version = ver):
 version_l = version.split('.')[0:2]
 ver = version_l[0] + '.' + version_l[1] 
 if (ver == '2.7'):
  f_time = datetime.datetime.strptime(str_time, time_format)
  f_time = f_time.strftime('%Y-%m-%d %H:%M:%S')
  return f_time
 elif(ver == '2.4'):
  f_time = time.strptime(str_time, time_format)
  f_time = datetime.datetime(*f_time[0:6])
  return f_time

# 時間格式
time_format = "%a %b %d %H:%M:%S %Y"
# 取得當(dāng)前時間
today = datetime.datetime.now()
# 定義4個星期
four_weeks = datetime.timedelta(weeks=6)
# 4星期前的日期
four_weeks_ago = today - four_weeks
# 將時間轉(zhuǎn)成timestamps
four_weeks_ago_timestamps = time.mktime(four_weeks_ago.timetuple())
# 列出目錄中的所有文件
files = os.listdir(dir)
# 打開要刪除的文件日志
fh = open(logfile, "w+")
# 遍歷文件,打印出文件的創(chuàng)建時間
for f in files:
 # 忽略掉.開頭的文件
 if f.startswith('.'):
  continue
 # 忽略掉當(dāng)前目錄下的目錄
 if os.path.isdir(os.path.join(dir,f)):
  continue
 # 獲得文件的modify時間,并轉(zhuǎn)換成timestamp格式
 file_timestamp = os.path.getmtime(os.path.join(dir, f))
 file_time_f = string2time(time.ctime(file_timestamp))
 if float(file_timestamp) <= float(four_weeks_ago_timestamps):
  fh.write(str(today) + "\t" + str(file_time_f) + "\t" + os.path.join(dir,f) + "\n")
  os.remove(os.path.join(dir,f))
# 關(guān)閉文件
fh.close()


腳本2:
實現(xiàn)類似下面的Shell命令的操作

復(fù)制代碼 代碼如下:
find  /data/log -ctime +5 | xargs  rm  -f

Python代碼:
復(fù)制代碼 代碼如下:

import os
import sys
import time
class DeleteLog:


    def __init__(self,fileName,days):
        self.fileName = fileName
        self.days = days
    def delete(self):
        if os.path.isfile(self.fileName):
            fd = open(self.fileName,'r')
            while 1:
                buffer = fd.readline()
                if not buffer : break
                if os.path.isfile(buffer):
                    os.remove(buffer)
            fd.close()
        elif os.path.isdir(self.fileName):
            for i in [os.sep.join([self.fileName,v]) for v in os.listdir(self.fileName)]:
                print i
                if os.path.isfile(i):
                    if self.compare_file_time(i):
                        os.remove(i)
                elif os.path.isdir(i):
                    self.fileName = i
                    self.delete()
    def compare_file_time(self,file):
        time_of_last_access = os.path.getatime(file)
        age_in_days = (time.time()-time_of_last_access)/(60*60*24)
        if age_in_days > self.days:
            return True
        return False
if __name__ == '__main__':
    if len(sys.argv) == 2:
        obj = DeleteLog(sys.argv[1],0)
        obj.delete()
    elif len(sys.argv) == 3:
        obj = DeleteLog(sys.argv[1],int(sys.argv[2]))
        obj.delete()
    else:
        print "usage: python %s listFileName|dirName [days]" % sys.argv[0]
        sys.exit(1)

相關(guān)文章

  • Python制作釘釘加密/解密工具

    Python制作釘釘加密/解密工具

    本文給大家介紹的是使用Python實現(xiàn)釘釘?shù)募用芙饷芄ぞ叩暮诵拇a,非常的實用,對于大家學(xué)習(xí)Python加密解密非常有幫助,希望大家能夠喜歡
    2016-12-12
  • Python編程編寫完善的命令行工具

    Python編程編寫完善的命令行工具

    提到編寫命令行工具,你可能會想到用 sys.argv 或者標(biāo)準(zhǔn)庫 argparse,沒錯,這兩個很常用,不過情況復(fù)雜時沒有那么方便和高效,因此今天分享兩個工具,讓你編寫命令行工具不費吹灰之力
    2021-09-09
  • python 布爾操作實現(xiàn)代碼

    python 布爾操作實現(xiàn)代碼

    python布爾操作也是我們經(jīng)常寫代碼需要用到的,首先我們需要明白在python里面,哪些被解釋器當(dāng)做真,哪些當(dāng)做假
    2013-03-03
  • 詳解如何用Python模擬登錄淘寶

    詳解如何用Python模擬登錄淘寶

    最近想爬取淘寶的一些商品,但是發(fā)現(xiàn)如果要使用搜索等一些功能時基本都需要登錄,所以就想出一篇模擬登錄淘寶的文章!本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • python通過Windows下遠(yuǎn)程控制Linux系統(tǒng)

    python通過Windows下遠(yuǎn)程控制Linux系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python通過Windows下遠(yuǎn)程控制Linux系統(tǒng),實現(xiàn)對socket模塊認(rèn)識,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 如何用Python數(shù)據(jù)可視化來分析用戶留存率

    如何用Python數(shù)據(jù)可視化來分析用戶留存率

    今天和大家來分享一些數(shù)據(jù)可視化方向的干貨,我們來嘗試用Python來繪制一下“漏斗圖”,感興趣的小伙伴和小編一起進入課題吧,但愿大家會有所收獲
    2021-09-09
  • 使用python加密主機文件幾種方法實現(xiàn)

    使用python加密主機文件幾種方法實現(xiàn)

    本文主要介紹了使用python加密主機文件幾種方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 詳解Python匹配多行文本塊的正則表達式

    詳解Python匹配多行文本塊的正則表達式

    這篇文章主要介紹了Python?匹配多行文本塊的正則表達式,該解決方案折衷了已知和未知模式的幾種方法,并解釋了匹配模式的工作原理,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • python+html實現(xiàn)前后端數(shù)據(jù)交互界面顯示的全過程

    python+html實現(xiàn)前后端數(shù)據(jù)交互界面顯示的全過程

    最近項目中采用了前后端分離的技術(shù),感覺有必要給大家總結(jié)下,所以下面這篇文章主要給大家介紹了關(guān)于python+html實現(xiàn)前后端數(shù)據(jù)交互界面顯示的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 回調(diào)函數(shù)的意義以及python實現(xiàn)實例

    回調(diào)函數(shù)的意義以及python實現(xiàn)實例

    本篇文章主要介紹了回調(diào)函數(shù)的意義以及python實現(xiàn)實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

江源县| 佳木斯市| 彭州市| 乌苏市| 云南省| 仙居县| 邢台市| 蒙城县| 邯郸市| 铁力市| 内江市| 崇文区| 远安县| 台南市| 集贤县| 禄丰县| 读书| 徐汇区| 中江县| 绿春县| 甘孜| 五台县| 依安县| 建瓯市| 新丰县| 百色市| 都昌县| 济宁市| 蒙阴县| 孝感市| 西藏| 大宁县| 昌乐县| 莲花县| 尼木县| 上林县| 大宁县| 玛曲县| 新津县| 二连浩特市| 临泽县|