debugging 为什么这个TypeError消息在python3脚本中检查文件的时间戳?

9cbw7uwe  于 2022-12-29  发布在  Python
关注(0)|答案(1)|浏览(159)

你能帮我完成这个任务吗?我哪里做错了?
我在一台Windows 11机器上,我正在尝试编写一个python 3.11脚本:
1.对给定文件夹中包含的屏幕截图列表进行排序,
1.仅选择创建日期(或修改日期,无关紧要)早于某个给定日期(例如2022年4月30日)的文件,
1.添加这些文件(只有这些)到一个'老文件'列表.
1.最后将这些旧文件移动到垃圾桶。
请看下面我的尝试。
解释器返回一个TypeError msg,特别是在这行代码的后面部分:
追溯(最近调用最后调用):
...
if modified.date() <=dt.date(2022,4,30):
TypeError:"datetime. datetime"对象的描述符"date"不适用于"int"对象

from datetime import datetime as dt
import os , send2trash, timedelta

myuser=os.getlogin()

# set paths
archivePath=rf"C:\Users\{myuser}\Pictures\Saved Pictures\2022.11.zip"
logPath=rf"C:\Users\{myuser}\Downloads\screenshots\TEST"

# a list of ONLY old files based on 'last modified' time (since Epoch).
if os.path.isfile(archivePath):
    print("Archive already exists, deleting copies in TEST folder.\n")
    os.chdir(logPath)
    old=[]
    for file in sorted(os.listdir(logPath)):
        modified=dt.fromtimestamp(os.stat(file).st_mtime) ## a float nr?
        ## conditions to be met: 
        if modified.date() <= dt.date(2022,4,30):
           old.append(file)
        else:
            print(str(file), ': conditions NOT met.')
    ## mv to trashcan
    numberFiles=len(old)
    print(f"Deleting {numberFiles} file.")
    for oldFile in old:
        send2trash.send2trash(oldFile)
else:
    print('No files deleted.')
3gtaxfhh

3gtaxfhh1#

通过修改以下行使其工作:

import datetime
...

myDate=datetime.datetime(2022,4,30)

...

    for file in sorted(os.listdir(logPath)):
        modified=datetime.datetime.fromtimestamp(os.stat(file).st_mtime)
        ## conditions to be met:
        if modified <= myDate:
            old.append(file)

实际上,我弄错了datetime.datetime方法

相关问题