为什么我的 python 任务不能与 Windows 任务计划程序一起运行,但它在 IDE 中运行良好?

问题描述 投票:0回答:2

这是有问题的代码。我的任务以更高的权限运行,所以它不应该是权限问题。它的唯一目的是自动删除早于特定日期且超过特定大小的文件。我想知道为什么它在计划或使用管理员权限手动打开时不运行。它确实打开但关闭时没有打印,也没有删除它应该具有的任何文件(如果它可以工作)。我也已经尝试在也不起作用的路径上安装库。

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)
python file scheduled-tasks
2个回答
1
投票

我没有意识到 dateutil 在安装时被命名为 python-dateutil 所以我只是没有安装库导致它除外。它现在工作正常。小错误。通过安装所有相关的库来修复它。


0
投票

我建议你可以写一个带有main函数的demo.py,然后尝试在你的main函数中调用你的API,并在cmd行中执行demo.py,例如,

C:\python demo.py 或 C:\python3 demo.py

你可能会找到一些线索。

© www.soinside.com 2019 - 2024. All rights reserved.