【发布时间】:2012-03-22 02:35:04
【问题描述】:
一个将数据以 100MB 块写入磁盘并通过附加 +1 来增加文件名的应用程序,即n1, n2 ... n1000。这最终会使用分区(Linux 主机)上的所有可用空间。我正在寻找一种方法来删除系列中首次写入的文件,直到驱动器空间处于特定利用率之下。
如果是后者,https://stackoverflow.com/a/5912404/666891 会是一个好的解决方案吗?
提出了以下解决方案,并且看起来是每个https://stackoverflow.com/a/837840/666891 的可行解决方案。如何修改它以处理递增的文件扩展名,因为当前脚本运行时它不会删除文件名 filename*,星号是递增的数字,从最旧的开始?
import os
def free_space_up_to(free_bytes_required="161061273600", rootfolder="/data/", ex
tension="filename-*"):
file_list= files_to_delete(rootfolder, extension)
while file_list:
statv= os.statvfs(rootfolder)
if statv.f_bfree*statv.f_bsize >= free_bytes_required:
break
os.remove(file_list.pop())
【问题讨论】:
-
我相信您链接的 bash 脚本是一个很好的解决方案。
-
您链接的脚本似乎删除了整个目录,而不是编号最小的文件。
-
只有一个文件名前缀需要担心吗?例如
n或者您还需要考虑其他前缀吗? -
如果你决定走 python 路线,这可能会有所帮助。 stackoverflow.com/questions/837606/…
-
python 日志模块的RotatingFileHandler 已经完成了与 OP 要求类似的操作,但可能无法将现有代码转换为使用日志模块。