当文件存储在列表或对象中时,为什么文件的最后访问时间会发生变化?

Why does the last access time change for a file when it gets stored in a list or object?

我正在尝试查看目录并确定上次访问文件的时间,以便我可以移动访问时间早于一个月之类的文件,但我在检查访问时间时遇到问题的文件。当这不是我想要做的事情时,我似乎已经写完了文件的访问时间。为什么会这样?

这是为了检查文件访问时间并将它们与一个月前的时间范围进行比较(显然没有完成,因为我遇到了问题)。我试过使用 st_mtime 和 st_ctime,但上次访问文件时没有 return。我正在编写代码的计算机是 Mac.

import os, shutil
import datetime as dt

downloads = "/Users/tomato/Downloads/"
os.chdir(downloads)

# list of files in downloads or specified directory
files_list = []

class file:
    def __init__(self, object):
        self.object = object
    def getLastATime(self): # prints out something that looks like this: 2019-04-03 which can be read as year-month-day
        return dt.date.fromtimestamp(os.stat(".").st_atime)

for files in os.listdir(os.getcwd()):
    files_list.append(file(files))
print(files_list[0].getLastATime())

当它打印出目录中的第一个文件时,我的预期结果是看到 2019-04-02,但我得到的是 2019-04-04,这是今天而不是我最后一次去文件并实际打开它以查看或使用它。

您的 class 次通话 os.stat(".")。这将始终获取当前目录的统计信息,而不是构建对象的文件的统计信息。 (因为您刚刚使用 os.listdir() 访问了目录,访问时间将是当前时间。)请考虑使用 os.stat(self.object)

另外,不要打电话给你的 class file。你会让习惯 the file class from Python 2.

的人感到困惑