1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python删除指定目录下过期文件的2个脚本分享

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

时间:2021-05-23 15:39:23

相关推荐

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

后端开发|Python教程

Python,删除过期文件

后端开发-Python教程

脚本1:

这两天用python写了一个删除指定目录下过期时间的脚本。也可能是我初学python,对python还不够熟习,总觉得这个脚本用shell写应该更简单也更容易些。

就功能上来说,该脚本已经实现了我想要的效果,不过该脚本还不够通用性,还有更多可以完善的地方。目前该脚本在python2.4下运行良好。同时,我在脚本中加入了对python版本的判断,理论上2.7下也应该可以正常使用。有环境的朋友可以帮忙测试一下。

该脚本不完善的地方在于,只能支持一级目录下的文件删除,还不支持目录递归。同时过期文件的定义只能按week来做。

Python代码:

php源码,vscode c,ubuntu官网,启动tomcat,sqlite数据库,网页设计教程,数据库的宽度在哪里,服务器是什么,百度分享插件,web前端框架,爬虫工具,php是什么,seo推广,springboot与spring,网页添加标签,网站模板,黄网页,菜单模板,系统后台模块功能列表,wpf 页面切换动画,成绩管理系统,源程序lzw

复制代码 代码如下:

微信多商城源码下载,完全重装ubuntu系统,爬虫python打开表格,fastcache php,济宁seo服务lzw

#! /usr/bin/env python

# -*- coding=utf-8 -*-

import sys

import os

import time,datetime

10人牛牛源码怎么安装,ubuntu修改网口,爬虫岗位数据,php echomax,新疆上空seolzw

# 定义需要删除文件的目录

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 "格式的时间转成“-07-02 14:50:15”格式的时间

# version是当前系统python版本号

# time是"Wed Jul 4 13:25:59 "格式的时间

# 函数返回"-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, )

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。