I'm trying to look at a directory and determine the last time a file was accessed so that I can move files that have an accesstime older than say like a month, but I am having issues with checking the access time of the files. The issue that I seem to be over writing the access time of the file when that is not what I am wanting to do. Why does this happen?
This is for checking file access times and comparing them to say a time frame of a month ago (obviously not done since I am having issues). I've tried using st_mtime and st_ctime, but those don't return the last time a file was accessed. The computer that I am coding this on is a 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())
My expected results for this when it prints out the first file in the directory is to see 2019-04-02, but what I get is 2019-04-04 which is today and not the last time I went to the file and actually opened it to view or use it.
Your class calls
os.stat("."). This will always get the stats of the current directory, not of the file the object was constructed with. (And because you've just accessed the directory withos.listdir(), the access time will be the current time.) Consider usingos.stat(self.object)instead.Also, don't call your class
file. You're going to confuse people who are used to thefileclass from Python 2.