如何使用 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"
。
有什么方法可以用 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"
。