我的django app
解析用户上传的一些文件。用户上传的文件可能会长时间保留在服务器中,而不会被应用程序解析。这可能会增加如果很多用户上传了很多文件。
我需要删除那些最近未被app -say not accessed for last 24 hours
解析的文件。我试过这样的
import os
import time
dirname = MEDIA_ROOT+my_folder
filenames = os.listdir(dirname)
filenames = [os.path.join(dirname,filename) for filename in filenames]
for filename in filenames:
last_access = os.stat(filename).st_atime #secs since epoch
rtime = time.asctime(time.localtime(last_access))
print filename+'----'+rtime
这显示了每个文件的最后访问时间。但是我不知道如何测试文件访问时间是否在过去24小时内。有人可以帮助我吗?
答案 0 :(得分:2)
结帐time.time()
。它允许您在utc时间访问当前时间戳。然后,您可以从文件时间戳中减去当前标记,看它是否大于24 * 60 * 60。
http://docs.python.org/library/time.html#time.time
另外,请记住,很多时候,Linux文件系统是使用noatime挂载的,这意味着可能不会填充st_atime变量。您应该使用st_mtime,只是为了安全起见,除非您100%确定文件系统将始终按照记录的时间进行挂载。
这是一个应该是一个有效的例子,我还没有调试过。
import os
import time
dirname = MEDIA_ROOT+my_folder
filenames = os.listdir(dirname)
filenames = [os.path.join(dirname,filename) for filename in filenames]
for filename in filenames:
last_access = os.stat(filename).st_mtime #secs since epoch
timediff = time.gmtime() - last_access
print filename+'----'+timediff
if timediff > 24*60*60:
print 'older than a day'
# do your thing
答案 1 :(得分:1)
为什么要打扰实际日期?只需检查os.stat(filename).st_atime < time.time() - 24*60*60
。