执行以下代码时,在第二次读取后,文件被填充为零,直到 4096 字节大。我不知道为什么:
f = open("file.txt", "w+")
f.read()
# gives ''
f.write("Hello")
f.read()
# filled with \x00,\x00
f.close()
# file is 4096 bytes large...
执行以下代码时,在第二次读取后,文件被填充为零,直到 4096 字节大。我不知道为什么:
f = open("file.txt", "w+")
f.read()
# gives ''
f.write("Hello")
f.read()
# filled with \x00,\x00
f.close()
# file is 4096 bytes large...
解决问题的最佳方法:不要混用read()
和write()
.
否则:在第二个之前write()
使用从头开始读取文件:seek()
read()
f = open("file.txt", "w+")
print f.read() # prints ''
f.write("Hello")
f.seek(0)
print f.read() # print 'Hello'
f.close()
这可能与文件系统和/或分区有关。我没有完全了解细节,但很可能 4096 字节(即正好 4Kb)是文件系统和分区中文件的最小大小。AFAIK,分区有一个块大小(通常为 4096 字节),文件只能分配给整个块。所以一个文件总是4096字节的倍数。我认为某些文件系统可以通过组合小文件来解决这个问题(例如 reiserfs)。