2

执行以下代码时,在第二次读取后,文件被填充为零,直到 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...
4

2 回答 2

3

解决问题的最佳方法:不要混用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()
于 2012-10-26T08:30:29.623 回答
2

这可能与文件系统和/或分区有关。我没有完全了解细节,但很可能 4096 字节(即正好 4Kb)是文件系统和分区中文件的最小大小。AFAIK,分区有一个块大小(通常为 4096 字节),文件只能分配给整个块。所以一个文件总是4096字节的倍数。我认为某些文件系统可以通过组合小文件来解决这个问题(例如 reiserfs)。

于 2012-10-26T08:36:43.923 回答