在Python中删除旧目录

chr*_*ley 2 python directory time timestamp

我有几个目录,我希望删除超过7天的目录.我已经实现了代码但它似乎没有工作.任何人都可以看到我错在哪里?

def delete_sandbox():

    for directories in os.listdir(os.getcwd()): 

        if not os.path.isdir(directories) or not os.stat(directories).st_ctime < time.time()-(7*24*3600): 
            continue
        os.chdir(directories)
        drop_sandbox()
        os.chdir(rootDir)
        os.system("sudo rm -rf "+directories)
        print 'Folders older than 7 days old dropped and removed'
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

文件夹沙箱会丢弃,但不会删除.我希望程序进入这些文件夹中的每一个,将沙箱,chnage放回根目录并删除所有旧目录.当我这样做时,文件夹仍然存在.

当我通过文件夹名称中存储的字符串日期删除目录时,此功能也起作用.但是现在我正在尝试获取时间戳,它已停止工作.

我测试过'rm -rf'+directories它并没有删除旧文件夹.当我尝试时,shutil.rmtree我收到错误消息:

Traceback (most recent call last):
  File "yep.py", line 21, in <module>
    delete_sandbox()
  File "yep.py", line 18, in delete_sandbox
    shutil.rmtree(directories)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/shutil.py", line 208, in rmtree
    onerror(os.listdir, path, sys.exc_info())
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/shutil.py", line 206, in rmtree
    names = os.listdir(path)
OSError: [Errno 2] No such file or directory: 'Debug'
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以删除这些文件夹吗?

我得到了它的工作,我使用shutil.rmtree,似乎一切都工作.谢谢你的帮助.修改后的代码是:

def delete_sandbox():

    for directories in os.listdir(os.getcwd()): 

        if not os.path.isdir(directories) or not os.stat(directories).st_ctime < time.time()-(sbox_age): 
            continue
        os.chdir(directories)
        drop_sandbox()
        os.chdir(rootDir)
        shutil.rmtree(directories)
        print 'Sandboxes older than 7 days old dropped and removed'

delete_sandbox()
Run Code Online (Sandbox Code Playgroud)

gho*_*g74 9

import os
import time
import shutil
numdays = 86400*7
now = time.time()
directory=os.path.join("/home","path")
for r,d,f in os.walk(directory):
    for dir in d:
         timestamp = os.path.getmtime(os.path.join(r,dir))
         if now-numdays > timestamp:
             try:
                  print "removing ",os.path.join(r,dir)
                  # shutil.rmtree(os.path.join(r,dir))  #uncomment to use
             except Exception,e:
                  print e
                  pass
             else: 
                  print "some message for success"
Run Code Online (Sandbox Code Playgroud)