【发布时间】:2015-03-12 01:33:08
【问题描述】:
我对 Python 绝对是全新的,虽然我已经做了一些搜索(并且找到了一些好的答案),但我仍然无法获得一个应该完全做到这一点的脚本。也就是说,我希望脚本一个一个地删除给定目录中最旧的文件,直到达到 100GiB 可用空间阈值。我目前收到以下错误:
File "./freespace.py", line 18, in <module>
free_space_up_to(107374182400, "/home/hindenpeter/Downloads/")
File "./freespace.py", line 13, in free_space_up_to
statv=os.fstatvfs(rootfolder)
TypeError: an integer is required
尝试运行此脚本时:
#!/usr/bin/python2.7
import os
def files_to_delete(rootfolder):
return sorted(
(os.path.join(dirname, filename)
for dirname, dirnames, filenames in os.walk(rootfolder)
for filename in filenames),
key=lambda fn: os.stat(fn).st_mtime),reversed==True
def free_space_up_to(free_bytes_required, rootfolder):
file_list=files_to_delete(rootfolder)
while file_list:
statv=os.fstatvfs(rootfolder)
if statv.f_bfree*statv.f_bsize >= free_bytes_required:
break
os.remove(file_list.pop())
free_space_up_to(107374182400, "/home/hindenpeter/Downloads/")
所以我正在寻求帮助以使其正常工作(另外,错误的确切含义的翻译会很棒!),或者可能是一个全新的脚本,可以做我想做的事情。
作为参考,这些是我发现的与我的问题最相关的帖子: Delete oldest files at full disk Find the oldest file (recursively) in a directory
【问题讨论】:
-
显然路径不存在时抛出错误
-
是的,事实证明我应该一直使用 os.statvfs,正如 Yann 建议的那样。
标签: python file python-2.7 delete-file