需要帮助Python删除旧dirs脚本

时间:2011-05-26 15:41:56

标签: python linux

这是我用来删除python中的旧目录的功能

def delete_olddirs(days,file_path):
     numdays = 60*60*24*days
     now = time.time()

     for dir in os.listdir(file_path):
              r = file_path
              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"

问题是每当我看到消息removing . ....时,我也会看到消息

some message for success

我想知道为什么每次都会执行其他部分

5 个答案:

答案 0 :(得分:1)

else位是成功运行的,你误解了它的目的。 请参阅:http://docs.python.org/tutorial/errors.html

答案 1 :(得分:1)

http://docs.python.org/reference/compound_stmts.html#the-try-statement

  

执行可选的else子句   如果和何时控制流出结束   try条款。 [2]例外情况   else子句不由处理   在except条款之前。

似乎很清楚。

答案 2 :(得分:0)

如果没有引发异常,则执行else的{​​{1}}部分。

答案 3 :(得分:0)

你正在使用try / except / else块。如果try块成功(没有捕获除外),则执行else块。这是正常行为。

答案 4 :(得分:0)

试试这个

    l=[]
    for dir in os.listdir(file_path):
        r = file_path
        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
                l.append("%s" %os.path.join(r,dir))
            except Exception,e:
                 print e
    print "removed the following folders %s" %L