Skript, mis otsib üles failid mille poole ei ole ammu pöördutud ja arhiveerib - Python: Difference between revisions
From ICO wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[[Category: Skriptimiskeeled]] | |||
<source lang="python"> | <source lang="python"> | ||
#!/usr/bin/python | #!/usr/bin/python | ||
Line 39: | Line 40: | ||
# tar with compressing | # tar with compressing | ||
tar = tarfile.open(archive, "w:gz") | tar = tarfile.open(archive, "w:gz") | ||
# walk all dir and subdirs | # walk all dir and subdirs | ||
for root, dirs, files in os.walk(path): | for root, dirs, files in os.walk(path): | ||
# | # loop all files | ||
for f in files: | for f in files: | ||
file = os.path.join(root,f) | # try get file stats | ||
try: | |||
# each file stats (mtime) | |||
file = os.path.join(root,f) | |||
stats = os.stat(file) | |||
file_mtime = stats.st_mtime | |||
# file mtime date | # file mtime date | ||
file_date = datetime.datetime.fromtimestamp(file_mtime) | |||
#diff in days | #diff in days | ||
days = today - file_date | |||
# days to int | # days to int | ||
days_int = days.days.__int__() | |||
# compare file and today | # compare file and today | ||
if days_int > day_diff: | |||
print file, days_int, "day(s) old" | |||
# add file to tar | # add file to tar | ||
tar.add(file) | |||
# if has remove argument | # if has remove argument | ||
if remove: | |||
os.remove(file) | |||
# if error | |||
except (IOError, OSError): | |||
print "Faili:", file, "ei saanud lugeda!" | |||
# close archive file | |||
tar.close() | |||
</source> | </source> |
Latest revision as of 13:50, 28 January 2011
#!/usr/bin/python
# Lauri Liibert AK21 2010
# archive old files script
import os, time
import datetime
import tarfile
from optparse import OptionParser
# current dir (default path)
curdir = os.getcwd()
# today date
today = datetime.datetime.today()
# archive date pattern
archive_date = today.strftime("%Y%m%d")
# default archive name with pattern
archive_template = "archive_" + archive_date + ".tar.gz"
# using (help)
parser = OptionParser()
parser.add_option("-p", "--path", dest="dirname", default=curdir,
action="store",
help="path", metavar="DIR")
parser.add_option("-a", "--archive",
action="store", dest="archive", default=archive_template,
help="archive name")
parser.add_option("-t", "--time", dest="time", default="356",
action="store", metavar="DAYS",
help="time", type="int")
parser.add_option("-r", "--remove", dest="remove", action="store_true",)
(options, args) = parser.parse_args()
# optargs
day_diff = options.time #time diff in deys
path = options.dirname # lookup path
archive = options.archive # archive name
remove = options.remove # remove files after archive
# tar with compressing
tar = tarfile.open(archive, "w:gz")
# walk all dir and subdirs
for root, dirs, files in os.walk(path):
# loop all files
for f in files:
# try get file stats
try:
# each file stats (mtime)
file = os.path.join(root,f)
stats = os.stat(file)
file_mtime = stats.st_mtime
# file mtime date
file_date = datetime.datetime.fromtimestamp(file_mtime)
#diff in days
days = today - file_date
# days to int
days_int = days.days.__int__()
# compare file and today
if days_int > day_diff:
print file, days_int, "day(s) old"
# add file to tar
tar.add(file)
# if has remove argument
if remove:
os.remove(file)
# if error
except (IOError, OSError):
print "Faili:", file, "ei saanud lugeda!"
# close archive file
tar.close()