【问题标题】:SpooledTemporaryFile: units of maximum (in-memory) size?SpooledTemporaryFile:最大(内存中)大小的单位?
【发布时间】:2015-04-01 14:44:45
【问题描述】:

tempfile.SpooledTemporaryFile() 的参数max_size 是内存中可以容纳的临时文件的最大大小(在溢出到磁盘之前)。这个参数的单位是什么(字节?千字节?)?文档(Python 2.7Python 3.4)没有说明这一点。

【问题讨论】:

    标签: python temporary-files


    【解决方案1】:

    大小以字节为单位。来自SpooledTemporaryFile() source code

    def _check(self, file):
        if self._rolled: return
        max_size = self._max_size
        if max_size and file.tell() > max_size:
            self.rollover()
    

    file.tell() 以字节为单位给出位置。

    我想说的是,任何与 Python 文件对象相关的术语 size 的使用都需要明确提及。所有其他处理 size 的文件方法也总是以字节为单位工作。

    【讨论】:

    • 好点,关于字节是标准的。然而,这是一个隐含的规则,需要对 Python 有很好的了解:我认为 SpooledTemporaryFile() 应该明确指出大小以字节为单位,以便 任何人 都可以使用它,而无需太多先前的 Python 文化.我将就此提出一个问题。
    • @EOL:我不确定是否需要这样做;在 C 或 Java 或 C# 或我使用过的任何其他语言中,在处理文件对象时,您处理字节,或者对于 Unicode 支持,代码点。只有在处理更高级别的 API 或用户界面时,您才会开始看到其他单元。
    • 我确信在文档中添加“以字节为单位”不会花费太多:可以说,与我有同样问题的人所花费的时间相比,它花费的时间更少。我有这个问题是因为你的一个答案(从 2012 年开始),你使用了 1024*10 的大小:这非常小,所以我真的想知道它们是否是字节。
    • 10Kb 有那么小吗?我想可能是这样,这取决于您要创建的数量以及典型的大小。
    • @CMCDragonkai:任意增长;查看复制到我的答案中的代码:if max_size and file.tell() > max_size: 只有在 max_size非零 时才为真。
    猜你喜欢
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    相关资源
    最近更新 更多