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网络爬虫采集联想词示例
Feb 11 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
Python进程间通信用法实例
Jun 04 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
python中logging包的使用总结
Feb 28 Python
python实现教务管理系统
Mar 12 Python
Numpy数组的保存与读取方法
Apr 04 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python实现按长宽比缩放图片
Jun 07 Python
python 实现敏感词过滤的方法
Jan 21 Python
python将视频转换为全字符视频
Apr 26 Python
python的链表基础知识点
Sep 13 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
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
2015/11/29 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
Python中operator模块的操作符使用示例总结
2016/06/28 Python
python协程之动态添加任务的方法
2019/02/19 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
python关于变量名的基础知识点
2020/03/03 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
高中毕业自我鉴定
2013/12/19 职场文书
学生手册家长评语
2014/02/10 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
百万英镑观后感
2015/06/09 职场文书