这是我用来删除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
我想知道为什么每次都会执行其他部分
答案 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