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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当文件存储在列表或对象中时,为什么文件的上次访问时间会发生变化?相关的知识,希望对你有一定的参考价值。

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

这是为了检查文件访问时间并将它们比作一个月前的时间范围(显然没有完成,因为我遇到了问题)。我尝试过使用st_mtime和st_ctime,但是上次访问文件时这些都没有返回。我正在编写的计算机是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,这是今天,而不是我最后一次去文件并实际打开它来查看或使用它。

答案

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

另外,不要打电话给你的班级file。你会混淆习惯the file class from Python 2的人。

以上是关于当文件存储在列表或对象中时,为什么文件的上次访问时间会发生变化?的主要内容,如果未能解决你的问题,请参考以下文章

1什么是cookie?

当有文件存储在 Azure Blob 存储中时触发 API 终结点

页面位于 iFrame 中时未保存会话变量

c#获取文件上次访问权限或可用性

当图像已上传到文件夹中时,如何解决 laravel 中的“文件不存在或不可读”

列表查找及二分查找