gpt4 book ai didi

python - "seek"在新创建的二进制文件上使用时是否写入零字节?

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:48 31 4
gpt4 key购买 nike

我注意到,当我做这样的事情时:

with open('testfile', 'wb') as fl:
fl.seek(2048*512)
fl.write(b'aaaaa')

无论我的 python 版本如何,生成文件的 hexdump 在 testfile 的第一部分中将有零字节:

$ hexdump -C testfile
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00100000 61 61 61 61 61 |aaaaa|
00100005

是否可以跨操作系统依赖这种有保证的预期行为?如果是这样,该事实记录在何处?

最佳答案

Is [zeroed out areas] intended behavior that can be counted on across operating systems? If so, where is that fact documented?

操作系统?可能不会:如果 Python 被移植到一些古老的操作系统,这些写入可能根本不会产生间隙(忽略查找),或者失败。然而,现代系统都支持 sparse files ,或者至少将它们伪造到使上述工作正常并以这种方式行事的程度。如果有人在做这样的反向移植,他们可以添加一个伪装层。

如果你依赖它,你可能是安全的。只是不要假设漏洞会一直存在:某些系统可能会在从备份恢复或跨集群迁移文件或其他任何东西时填补它们。如果您在其中寻找几 TB 并写入一个字节,则文件可能只占用一点空间直到填充点,如果它发生的话。

关于python - "seek"在新创建的二进制文件上使用时是否写入零字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53384736/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com