如何使用 Python 在不将文件加载到 RAM 的情况下更改文件中的第 n 个字节

How to change the nth byte in a file without loading it into RAM using Python

有什么方法可以用 O(1) space 和时间复杂度更改文件的第 n 个字节。我确实知道一种以 O(n) 时间复杂度读取第 n 个字节(不加载到 RAM)的方法,方法是每 x 个字符添加一个换行符并遍历文件中的行。

备注: 我有一个 .txt 文件,大小约为 1GB,使用 latin-1 编码(因此每个字符占用 1 个字节)。

如评论中所述,您可以将当前文件位置更改为文件中的特定位置,然后覆盖下一个字节。

with open("blankpaper.txt", "wb") as f:
    # write a few bytes to file
    f.write(b"abcdefg")
    # changes file position
    f.seek(3)
    # overwrites the fourth byte
    f.write(b"g")

生成的文件包含内容 b"abcgefg"