使用python删除未访问的文件

2024-04-26 01:10:36 发布

您现在位置:Python中文网/ 问答频道 /正文

Mydjango app分析用户。它用户上载的文件可能会在服务器中长时间保留,而不会被解析应用程序。这个如果很多用户上传了很多文件,文件的大小会增加。在

我需要删除那些最近没有被应用程序解析的文件,比如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小时内..有人能帮我吗?在


Tags: 文件用户inimport应用程序foraccesstime
2条回答

为什么要纠结于实际的约会呢?只需检查os.stat(filename).st_atime < time.time() - 24*60*60。在

签出time.time()。它将允许您访问当前的时间戳,以utc时间为单位。然后可以从文件时间戳中减去当前的戳,看看它是否大于24*60*60。在

http://docs.python.org/library/time.html#time.time

另外,请记住,很多时候,Linux文件系统都是用noatime挂载的,这意味着可能不会填充st_atime变量。为了安全起见,您可能应该使用st_mtime,除非您百分之百地确定文件系统总是在安装时记录时间。在

这是一个有效的例子,我还没有调试过。在

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

相关问题 更多 >

    热门问题