我有一个脚本来查找3个月前创建的目录(在OperDir中),以及查找一年前创建的目录(DelDir)。它使用dirname并用这些dirname创建一个.txt文件。它在Windows上可以正常工作,但是不能在Linux上创建文件,即使是在根目录下。可能是权限问题还是其他问题?代码如下:import os, time, sys
from os.path import join, getsize, isfile, isdir, splitext
import ctypes
import platform
from os import path
import shutil
import logging
from logging import handlers
from datetime import datetime, timedelta
def checkTime(timed):
curr_time = str(time.gmtime())
year_st = curr_time.find('tm_year') + 8
year_fin = curr_time.find('tm_mon') - 2
year = int(curr_time[year_st:year_fin:1])
month_st = curr_time.find('tm_mon') + 7
month_fin = curr_time.find('tm_mday') - 2
month = int(curr_time[month_st:month_fin:1])
day_st = curr_time.find('tm_mday') + 8
day_fin = curr_time.find('tm_hour') - 2
day = int(curr_time[day_st:day_fin:1])
if timed == 'year':
return year
elif timed == 'month':
return month
elif timed == 'day':
return day
def split(path):
head, tail = os.path.split(path)
return tail
def moveFileOperativeTest(pathOper, pathDelete, nameOper):
logfile = open('MovedFilesLog.txt', 'a+')
logfile.write(str(checkTime('day')) + '.' + str(checkTime('month')) + '.' + str(checkTime('year')) + ' - ' + "File '%s' will be moved from '%s' to the '%s'.\n" % (nameOper, pathOper, pathDelete))
logfile.close
'''with open('MovedFilesLog.txt', 'a') as logfile:
logfile.write(checkTime('day') + '.' + checkTime('month') + '.' + checkTime('year') + ' - ' + "File '%s' will be moved from '%s' to the '%s'.\n" % (nameOper, pathOper, pathDelete))
logfile.close()'''
def removeFileTest(pathDelete, nameDelete):
logfile = open('RemovedFilesLog.txt', 'a+')
logfile.write(str(checkTime('day')) + '.' + str(checkTime('month')) + '.' + str(checkTime('year')) + ' - ' + "File '%s' will be removed from '%s' directory.\n" % (nameDelete, pathDelete))
logfile.close
'''with open('RemovedFilesLog.txt', 'a') as logfile:
logfile.write(checkTime('day') + '.' + checkTime('month') + '.' + checkTime('year') + ' - ' + "File '%s' will be removed from '%s' directory.\n" % (nameDelete, pathDelete))
logfile.close()'''
def pathed(pathOper, pathDelete, yearOper, monthOper, dayOper, yearDel, monthDel, dayDel):
for dirname, dirnames, filenames in os.walk(pathOper):
for subdirname in dirnames:
dirpath = os.path.join(dirname, subdirname)
if getCreationDate(dirpath, 'day') == dayOper and getCreationDate(dirpath, 'month') == monthOper and getCreationDate(dirpath, 'year') == yearOper:
nameOper = split(dirpath)
print "opername = " +nameOper
moveFileOperativeTest(pathOper, pathDelete, nameOper)
#moveFileOperative(pathOper, pathDelete, nameOper)
for dirname, dirnames, filenames in os.walk(pathDelete):
for subdirname in dirnames:
dirpath = os.path.join(dirname, subdirname)
if getCreationDate(dirpath, 'day') == dayOper and getCreationDate(dirpath, 'month') == monthOper and getCreationDate(dirpath, 'year') == yearOper:
nameDelete = split(dirpath)
print 'namedel = ' + nameDelete
removeFileTest(pathDelete, nameDelete)
#removeFile(pathDelete, nameDelete)
print 'Done'
def dateCheck(pathOper, pathDelete):
operVar = 92
delVar = 365
operDate = datetime.now() - timedelta(days=operVar)
delDate = datetime.now() - timedelta(days=delVar)
yearOper = int(str(operDate)[0:4:1])
monthOper = int(str(operDate)[5:7:1])
dayOper = int(str(operDate)[8:10:1])
yearDel = int(str(delDate)[0:4:1])
monthDel = int(str(delDate)[5:7:1])
dayDel = int(str(delDate)[8:10:1])
pathed(pathOper, pathDelete, yearOper, monthOper, dayOper, yearDel, monthDel, dayDel)
def getCreationDate(path, timed):
dict_month = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}
creation = str(time.ctime(os.path.getctime(path)))
month = int(dict_month.get(creation[4:7:1]))
day = int(creation[8:10:1])
year = int(creation[-4::1])
if timed == 'day':
return day
elif timed == 'month':
return month
else:
return year
dateCheck("/opt/***", "/opt/****")
如果这是个愚蠢的问题,我很抱歉,我是Python新手。在
谢谢你的帮助。在