Python删除指定目录下过期文件的2个脚本分享


Posted in Python onApril 10, 2014

脚本1:

这两天用python写了一个删除指定目录下过期时间的脚本。也可能是我初学python,对python还不够熟习,总觉得这个脚本用shell写应该更简单也更容易些。
就功能上来说,该脚本已经实现了我想要的效果,不过该脚本还不够通用性,还有更多可以完善的地方。目前该脚本在python2.4下运行良好。同时,我在脚本中加入了对python版本的判断,理论上2.7下也应该可以正常使用。有环境的朋友可以帮忙测试一下。
该脚本不完善的地方在于,只能支持一级目录下的文件删除,还不支持目录递归。同时过期文件的定义只能按week来做。

Python代码:

#! /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')
# 获取当前系统python版本
ver = sys.version
ver = ver.split(' ')
ver = ver[0]
# 将"Wed Jul  4 13:25:59 2012"格式的时间转成“2012-07-02 14:50:15”格式的时间
# version是当前系统python版本号
# time是"Wed Jul  4 13:25:59 2012"格式的时间
# 函数返回"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"
# 取得当前时间
today = datetime.datetime.now()
# 定义4个星期
four_weeks = datetime.timedelta(weeks=6)
# 4星期前的日期
four_weeks_ago = today - four_weeks
# 将时间转成timestamps
four_weeks_ago_timestamps = time.mktime(four_weeks_ago.timetuple())
# 列出目录中的所有文件
files = os.listdir(dir)
# 打开要删除的文件日志
fh = open(logfile, "w+")
# 遍历文件,打印出文件的创建时间
for f in files:
 # 忽略掉.开头的文件
 if f.startswith('.'):
  continue
 # 忽略掉当前目录下的目录
 if os.path.isdir(os.path.join(dir,f)):
  continue
 # 获得文件的modify时间,并转换成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))
# 关闭文件
fh.close()

脚本2:
实现类似下面的Shell命令的操作

find  /data/log -ctime +5 | xargs  rm  -f

Python代码:
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)
Python 相关文章推荐
python zip文件 压缩
Dec 24 Python
Python装饰器使用实例:验证参数合法性
Jun 24 Python
详解python之简单主机批量管理工具
Jan 27 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
Feb 18 Python
解决已经安装requests,却依然提示No module named requests问题
May 18 Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python pickle模块常用方法代码实例
Oct 10 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
python基础之停用词过滤详解
Apr 21 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 Python
python非标准时间的转换
Jul 25 Python
python实现随机密码字典生成器示例
Apr 09 #Python
Python下的Mysql模块MySQLdb安装详解
Apr 09 #Python
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
Apr 08 #Python
python计算圆周长、面积、球体体积并画出圆
Apr 08 #Python
python实现类似ftp传输文件的网络程序示例
Apr 08 #Python
Python collections模块实例讲解
Apr 07 #Python
python操作xml文件示例
Apr 07 #Python
You might like
PHP5中虚函数的实现方法分享
2011/04/20 PHP
解析php入库和出库
2013/06/25 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
2012/07/31 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
vc6编写python扩展的方法分享
2014/01/17 Python
Python help()函数用法详解
2014/03/11 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Python实现的质因式分解算法示例
2018/05/03 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
html5 学习简单的拾色器
2010/09/03 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
销售工作岗位职责
2013/12/24 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
2014年小学教导处工作总结
2014/12/19 职场文书
2015年母亲节寄语
2015/03/23 职场文书
学校实习推荐信
2015/03/27 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
公司年会主持词范文!
2019/05/07 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
python实现股票历史数据可视化分析案例
2021/06/10 Python
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python