【发布时间】:2011-01-15 07:49:04
【问题描述】:
我有几个目录,我希望删除超过 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'
感谢您的帮助
文件夹沙盒删除但不删除。我希望程序进入这些文件夹中的每一个,放下沙箱,回到根目录并删除所有旧目录。当我这样做时,文件夹仍然存在。
当我通过存储在文件夹名称中的字符串日期删除目录时,此功能也起作用。但现在我正在尝试获取它已停止工作的时间戳。
我已经测试了'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'
还有其他方法可以删除这些文件夹吗?
我成功了,我使用了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()
【问题讨论】:
-
这是什么意思似乎没有工作?您收到任何错误消息吗?
-
如果某些目录名称包含空格(在 os.system 调用中)或者如果入口处的当前目录不是
rootDir,这将失败。您是否遇到错误,如果是,是什么以及在哪里?或意外的行为,如果是这样,是什么,在哪里?一些prints 会给我们更多信息(你目前给我们大约0位;-)。 -
一般建议/警告,在向系统调用时,尤其是在涉及“rm”时。为您的函数提供一个默认为 True 的空运行选项,以打印它将运行的系统命令。
标签: python time directory timestamp