Script 1:
These two days wrote in Python a script that deletes the expiration time in the specified directory. Or maybe I'm a beginner of python, not familiar with Python, and always feel that this script should be simpler and easier to write with the shell.
Functionally, the script has achieved the effect I want, but the script is not universal enough, and there are many more areas to be perfected. The script is currently running well under python2.4. At the same time, I added the script to the Python version of the judgment, in theory 2.7 should also be able to use normal. Friends with environment can help with the test.
The script is not perfect in that it can only support file deletion in the first level directory, and does not support directory recursion. At the same time, the definition of outdated files can only be done by week.
Python code:
Copy the Code code as follows:
#! /usr/bin/env python
#-*-Coding=utf-8-*-
Import Sys
Import OS
Import Time,datetime
# define the directory where files need to be deleted
dir = '/data/webbak/'
# written to log file by deleted file
LogDir = '/var/log '
LogFile = Os.path.join (LogDir, ' Delete.log ')
# get current system Python version
ver = sys.version
ver = Ver.split (")
ver = ver[0]
# time to convert "Wed Jul 4 13:25:59 2012" to "2012-07-02 14:50:15" format
# version is the current system Python version number
# time is "Wed Jul 4 13:25:59 2012" format
# The function returned the time of "2012-07-02 14:50:15" format
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
Time_format = "%a%b%d%h:%m:%s%Y"
# Get current time
Today = Datetime.datetime.now ()
# definition 4 weeks
Four_weeks = Datetime.timedelta (weeks=6)
# 4 weeks ago Date
Four_weeks_ago = Today-four_weeks
# Turn the time into timestamps
Four_weeks_ago_timestamps = Time.mktime (Four_weeks_ago.timetuple ())
# list all files in the directory
Files = Os.listdir (dir)
# Open the file log you want to delete
FH = open (logfile, "w+")
# traverse the file to print out the creation time of the file
For f in Files:
# ignore. Files that begin with
If F.startswith ('. '):
Continue
# Ignore directories in current directory
If Os.path.isdir (Os.path.join (dir,f)):
Continue
# Get file Modify time and convert to timestamp format
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 (today) + "\ T" + str (file_time_f) + "\ T" + os.path.join (dir,f) + "\ n")
Os.remove (Os.path.join (dir,f))
# Close File
Fh.close ()
Script 2:
Implement operations similar to the following shell commands
Copy the Code code as follows:
Find/data/log-ctime +5 | Xargs rm-f
Python code:
Copy CodeThe code is as follows:
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)