- 论坛徽章:
- 0
|
import os
import re
class ssfjhh:
"""
under the current dir and its subdir, tell all old version files and remove them and all empty dir
rename the newest file as .1 at last.
"""
pattern_ = re.compile(r'\.\d+$')
def __init__(self):
# key is filename, value is the biggest version num
self.versionfiles = {}
def __findversionfiles__(self,dirname_):
"""
find all files with '.[1-9+]'at the last name under dirname_and its subdir
and store them in versionfiles
"""
(dir,dirnames, filenames)= os.walk(dirname_)
for filename in filenames:
if pattern_(filename):
fd= ssfjhh.pattern_.split(filename)[0]
version = filename.split(fd + '.')
if self.versionfiles.has_key(fd):
if self.versionfiles[fd] < int(version):
self.versionfiles[fd]= int(version)
else:
self.versionfiles[fd]= int(version)
for dirname in dirnames:
findversionfiles(dirname)
def __removefiles__(self,dirname_):
"""
remove old version file and rename the biggest version file to 1
"""
(dir,dirnames, filenames)= os.walk(dirname_)
for filename in filenames:
if pattern(filename):
fd= ssfjhh.pattern_.split(filename)[0]
version = filename.split(fd + '.')
if self.versionfiles.has_key(fd):
if self.versionfiles[fd] < int(version):
os.remove(os.path.join(dir,filname))
else:
os.rename(os.path.join(dir,filname), os.path.join(dir,fd + '.' + '1'))
for dirname in dirnames:
removefiles(dirname)
def __removeblankdir__(self,dirname_):
"""
remove blank dir
"""
(dir,dirnames, filenames)= os.walk(dirname_)
if dirname == None and filenames == None:
os.remove(dir)
elif dirnames !=None:
for dirname in dirnames:
removeblankdir(dir)
def remove(self,dirname_):
removeblankdir(dirname_)
findversionfiles(dirname_)
removefiles(dirname_)
if __name__ == "__main__":
test = ssfjhh()
localdir = os.path.dirname(__file__)
test.removefiles(localdir) |
|