Python的读写add\x00到文件

标签 python file-io

在 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/

相关文章:

python - Python 3 中是否有比 bytes(str(some_variable), 'utf-8' ) 更短或更快的替代方案?

python - 如何抑制 Tensorflow (Python) 中的特定警告

python - 使用 os.walk() 时如何排除目录?其他方法没有效果

Python:将值读入空数组,然后返回文件

java - 在 Java 中复制数据的更快方法?

python - 仅写入文件中某行的某些列(以空格分隔)

python - 测试图是来自 Edgelist 文件的有向图还是无向图

python - 如何从Python中的配置文件读取argparser值?

c - 写入此文件句柄有什么问题?

java - 检测扫描仪是否没有下一个