这是有问题的代码。我的任务以更高的权限运行,所以它不应该是权限问题。它的唯一目的是自动删除早于特定日期且超过特定大小的文件。我想知道为什么它在计划或使用管理员权限手动打开时不运行。它确实打开但关闭时没有打印,也没有删除它应该具有的任何文件(如果它可以工作)。我也已经尝试在也不起作用的路径上安装库。
import datetime
from dateutil.relativedelta import relativedelta
def Setup():
Directories = open("Directories.txt", "r")
dir = Directories.readline().rstrip()
Directories.close()
FSFile = open("FileSizeMax.txt", "r")
FileSizeMax = FSFile.readline().rstrip()
FSFile.close()
Exclusions = open("Exclusions.txt", "r")
ExclusionList = [line.rstrip() for line in Exclusions]
Exclusions.close()
lastDate = datetime.datetime.now() - relativedelta(weeks=1)
formattedDate = lastDate.strftime("%m/%d/%Y")
return dir, FileSizeMax, ExclusionList, formattedDate
# Get clips in directory
def getFiles(dirs):
list = []
list = os.listdir(dirs)
return list
# Delete any clips older than the last date and larger than the MB set in the FileSizeMax.txt. Exclude any thing set in exclusions file.
def delFiles(files, FileSizeMax, ExclusionList, dirs, lastdate):
print(files)
lDate = datetime.datetime.strptime(lastdate, "%m/%d/%Y")
for file in files:
print(file)
path = os.path.join(dirs, file)
print(path)
timecreated = os.path.getctime(path)
size = os.path.getsize(path) >> 20
date = datetime.datetime.fromtimestamp(timecreated).strftime("%m/%d/%Y")
parseddate = datetime.datetime.strptime(date, "%m/%d/%Y")
print(f'{file} created on {date} and is {size} MB\n')
if date not in ExclusionList and size > FileSizeMax and parseddate <= lDate:
print(f"Delete {file} {date} {size} MB")
os.remove(path)
dirList, FileSizeMax, ExclusionList, lastmonth = Setup()
print(dir)
print(FileSizeMax)
print(ExclusionList)
maxFile = int(FileSizeMax)
files = getFiles(dirList)
delFiles(files, maxFile, ExclusionList, dirList, lastmonth)
我没有意识到 dateutil 在安装时被命名为 python-dateutil 所以我只是没有安装库导致它除外。它现在工作正常。小错误。通过安装所有相关的库来修复它。
我建议你可以写一个带有main函数的demo.py,然后尝试在你的main函数中调用你的API,并在cmd行中执行demo.py,例如,
C:\python demo.py 或 C:\python3 demo.py
你可能会找到一些线索。