【问题标题】:When are files too large to be read as strings in Python?什么时候文件太大而无法在 Python 中作为字符串读取?
【发布时间】:2017-04-15 02:59:14
【问题描述】:

我了解(在某种意义上)如果您不知道文件大小或文件大小很大,将整个文本文件作为字符串读取被认为是不好的做法。例如:

with open('letters.txt', 'r') as my_txt_file:
    my_txt = my_txt_file.read()

将使my_txt 成为一个包含'letters.txt' 中所有文本的字符串。

我假设认为文件太大而无法作为字符串读取的阈值取决于硬件的规格。但我想知道,一般来说,当一个人应该选择逐行读取文件时,是否有一定的文件大小限制?

【问题讨论】:

    标签: python python-2.7 file memory


    【解决方案1】:

    理论上的限制是 Python 字符串的最大大小,由它的索引决定,即 2 ** 63 解释 here

    实际限制取决于您系统的内存。显然,如果在内存中保存一个字符串需要的内存比你的系统更多,那么你会得到一个MemoryError

    就良好实践而言,这有点主观。但是,总的来说,我认为逐行读取文件是一种很好的做法,即使对于小文件也是如此(提高内存效率似乎是一种很好的做法)。当然,可能有一些情况需要将整个文件放在一个字符串中,但我认为这种情况非常少见。

    【讨论】:

    • 理论上的限制会更小,具体取决于可用的虚拟内存。对于 32 位 python,默认情况下约为 2GB。
    猜你喜欢
    • 2016-12-29
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多