在python中处理文件时遇到了一个奇怪的问题.假设我有一个文本文件和一段简单的代码来读取文件的内容,然后用未改变的内容重写它.
FILE.TXT
这是一个测试文件
Python代码
f=open(File.txt,'r+')
data=f.read()
f.truncate(0)
f.write(data)
f.close()
Run Code Online (Sandbox Code Playgroud)
运行上面的代码后File.txt似乎是一样的.但是,当我在十六进制编辑器中打开它时,我很惊讶\x00在文本文件的实际内容之前看到了很多(NULL)字节,这在之前是不存在的.
有人可以解释一下吗?
假设您的文件中包含20个字节.所以f.read()读取20个字节.现在您将文件截断为0字节.但是你的文件位置指针仍然是20.为什么不是?你没有动过它.所以当你写作时,你开始写第21个字节.您的操作系统用零填充20个丢失的字节.
为了避免这种情况,f.seek(0)再次写作之前.
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |