Python 比较上次修改时间和当前时间,然后删除文件和文件夹

Python 比较上次修改时间和当前时间,然后删除文件和文件夹,python,file-io,time,Python,File Io,Time,我有一个服务器,我需要从该服务器上删除特定文件夹中的文件和文件夹,我想每3个月删除一次,我已经知道如何使用crontab和python进行删除,问题是,我只想删除3个月或更长时间的文件或文件夹 我用来删除文件和文件夹的python代码如下: import os import shutil path = '/path/to/folder' for root, dirs, files in os.walk(path): for f in files:

我有一个服务器,我需要从该服务器上删除特定文件夹中的文件和文件夹,我想每3个月删除一次,我已经知道如何使用crontab和python进行删除,问题是,我只想删除3个月或更长时间的文件或文件夹

我用来删除文件和文件夹的python代码如下:

import os
import shutil
path = '/path/to/folder'

for root, dirs, files in os.walk(path):
        for f in files:
                os.unlink(os.path.join(root, f))
        for d in dirs:
                shutil.rmtree(os.path.join(root,d))
我现在想要的是获得上次修改的每个文件和文件夹月份,并将其与Im所在的当前月份进行比较,然后仅当其“期限”大于或等于3个月时才将其删除


有什么帮助吗?

在posix上执行此操作的通常方法是针对文件:

find path -mtime +90 -a -type f -a -exec rm "{}" \; 
对于文件夹:

find path -mtime +90 -a -type d -a -exec rm -r "{}" \; 
但是当然你需要小心任何rm-r!如果感兴趣的文件夹未嵌套,则更安全:

find path -mtime +90 -a -type d -a -exec rmdir "{}" \; 

在python中,shell exec用于此操作。它不是一个跨平台的纯python解决方案。

因此,这就是答案

我没有删除3个月以上的文件,而是删除6个月以上的文件和文件夹

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, glob, shutil, time, datetime
path = glob.glob('/home/piratinha/*')
now  = time.time()
now_str = datetime.datetime.fromtimestamp(now).strftime('%d-%m-%Y %H:%M:%S')
print now_str
for f in path:
    if os.stat(f).st_mtime < now - (6 * 30 * 86400):
        if os.path.isfile(f):
            print "Removendo", f
            os.remove(f)
            print "Arquivo Removido"
        else:
            print "Removendo", f
            shutil.rmtree(f)
            print "Pasta Removida"
else:
    print   "Todos os arquivos e pastas são mais novos do que 6 meses."

print now_str
#/usr/bin/env python
#-*-编码:utf-8-*-
导入操作系统、全局、shutil、时间、日期时间
path=glob.glob('/home/piratinha/*'))
now=time.time()
now\u str=datetime.datetime.fromtimestamp(now).strftime(“%d-%m-%Y%H:%m:%S”)
立即打印
对于路径中的f:
如果os.stat(f).st_mtime<现在-(6*30*86400):
如果os.path.isfile(f):
打印“Removendo”,f
删除操作系统(f)
打印“Arquivo Removido”
其他:
打印“Removendo”,f
shutil.rmtree(f)
打印“意大利面Removida”
其他:
印刷“Todos os arquivos e pastas sÃo mais novos do que 6 meses。”
立即打印
比尔

红码