Почему время последнего доступа к файлу изменяется, когда он сохраняется в списке или объекте? - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь посмотреть каталог и определить, когда в последний раз к файлу обращались, чтобы я мог переместить файлы, у которых время доступа старше, чем, скажем, месяц, но у меня возникают проблемы с проверкой времени доступафайлы.Проблема, по-моему, заключается в записи времени доступа к файлу, когда я не хочу этого делать.Почему это происходит?

Это для проверки времени доступа к файлу и сравнения его с временными рамками месяца назад (очевидно, не сделано, так как у меня возникли проблемы).Я пытался использовать 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, то есть сегодня, а не в последний раз, когда я заходил в файл и фактически открывал его для просмотра или использования.

1 Ответ

1 голос
/ 05 апреля 2019

Ваш класс звонит os.stat("."). Это всегда будет получать статистику текущего каталога, а не файла, с которым был создан объект. (И поскольку вы только что получили доступ к каталогу с помощью os.listdir(), время доступа будет текущим.) Попробуйте вместо этого использовать os.stat(self.object).

Кроме того, не называйте свой класс file. Вы будете путать людей, которые привыкли к классу file из Python 2 .

...