如何限制文件大小?

13 投票
6 回答
21212 浏览
提问于 2025-04-16 05:55

我正在使用io模块的输出流来写文件。我想知道怎么才能检测到我已经写了1G的数据到一个文件里,然后再开始写第二个文件。我现在还不知道怎么才能确定我写了多少数据到这个文件里。

io模块里有没有什么简单的方法可以做到这一点?还是说我得在每次写之前手动计算字节数呢?

6 个回答

3

看看流对象上的 tell() 方法。

16

如果你是用这个文件来记录日志,我建议你使用日志模块里的 RotatingFileHandler,可以这样做:

import logging
import logging.handlers

file_name = 'test.log'

test_logger = logging.getLogger('Test')
handler = logging.handlers.RotatingFileHandler(file_name, maxBytes=10**9)
test_logger.addHandler(handler)

注意:即使你不打算用它来记录日志,如果你喜欢搞一些小把戏,也可以用这个方法哦 :)

9

可以查看Python的官方文档,了解一下文件对象,特别是tell()这个函数。

下面是一个例子:

>>> f=open('test.txt','w')
>>> f.write(10*'a')
>>> f.tell()
10L
>>> f.write(100*'a')
>>> f.tell()
110L

撰写回答