python - 使用python删除未访问的文件

标签 python file time

我的django app解析了用户上传的一些文件,有可能用户上传的文件在服务器中停留了很长时间,没有被app解析。这个如果很多用户上传大量文件,大小可能会增加。

我需要删除应用程序最近未解析的那些文件 - 比如 最近 24 小时未访问。我试过这样

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 小时内..有人可以帮我吗?

最佳答案

查看 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

关于python - 使用python删除未访问的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11337382/

相关文章:

python - 查找一段时间内每个项目和 ID 的平均值 (Python)

python - 用 Scrapy 编写 Instagram 爬虫。我怎样才能进入下一页?

Python文件搜索行并在匹配后返回特定行数

python - 从 Excel 到 Pandas 打发时间

Python如何运行这个函数得到100个素数

python - OpenCV - 如何通过斜线将图像分割为两个区域?

Python:具有实际磁盘文件语义的命名内存文件?

c - 如何正确读取文件中的输入?

python - 如何在不影响其余部分的情况下延迟程序的一部分?

python - 为什么 A star 比 Dijkstra 更快,即使启发式在网络中设置为 Nonex