我有几个目录,我希望超过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()
drop_sandbox()
做什么?(你给我们的函数是delete_sandbox()
)也许你的意思是这是一个递归函数,使用了错误的函数名os.chdir("..")
rootDir
包含什么?os.listdir
给出相对路径。如果rootDir
是搜索的基础,则列出的目录可能无法工作。更糟的是:如果他们这样做了,你可能会删除一些你仍然想要的东西。另外,
shutil
包有一个rmtree
函数,您可能需要查看它。os.listdir
返回字符串列表,这些字符串是相对路径。当chdir到rootdir时,取决于rootdir是什么,这些路径可能不再有效。相关问题 更多 >
编程相关推荐