在 python 中处理文件时,我遇到了一个奇怪的问题。假设我有一个文本文件和一段简单的代码,用于读取文件的内容,然后用未更改的内容重写它。
文件.txt
This is a test file
Python代码
f=open(File.txt,'r+')
data=f.read()
f.truncate(0)
f.write(data)
f.close()
运行上面的代码后File.txt
好像是一样的。然而,当我在十六进制编辑器中打开它时,我惊讶地看到在文本文件的实际内容之前有很多 \x00
(NULL) 字节,不是以前有。
谁能解释一下?
最佳答案
假设您的文件有 20 个字节。所以 f.read()
读取 20 个字节。现在您将文件截断为 0 字节。但是您的文件位置指针仍为 20。为什么不呢?你没有移动它。所以当你写的时候,你从第 21 个字节开始写。您的操作系统用零填充了 20 个缺失的字节。
为避免这种情况,请在再次写入之前f.seek(0)
。
关于Python的读写add\x00到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729452/