Я пытаюсь просмотреть каталог и определить время последнего доступа к файлу, чтобы я мог перемещать файлы, время доступа которых старше, скажем, месяца, но у меня возникают проблемы с проверкой времени доступа к файлам. Проблема в том, что я, кажется, переписываю время доступа к файлу, когда это не то, что я хочу делать. Почему это происходит?
Это для проверки времени доступа к файлам и сравнения их, скажем, с временными рамками месячной давности (очевидно, это не сделано, так как у меня проблемы). Я пытался использовать 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
. Вы запутаете людей, привыкших к класс file
из Python 2.