Weird behavior when writing and reading file

前端 未结 2 1671
时光说笑
时光说笑 2021-01-15 10:45

When executing the following code, after the second read, file gets filled with zero until being 4096 bytes large. I can\'t figure out why :

f = open(\"file.         


        
相关标签:
2条回答
  • 2021-01-15 11:30

    Best way to solve your problem: don't mix read() and write().

    Otherwise: after the write(), use seek() before the second read() to read your file from the beginning:

    f = open("file.txt", "w+")
    print f.read()      # prints ''
    f.write("Hello")
    f.seek(0)
    print f.read()      # print 'Hello'
    f.close()
    
    0 讨论(0)
  • 2021-01-15 11:35

    This is probably related to the filesystem and/or partition. I'm not fully up to speed on the details, but it is likely that 4096 bytes (i.e. exactly 4Kb) is the minimum size of a file in your filesystem and partition. AFAIK, the partition has a block size (often 4096 bytes), and files can only be allocated to whole blocks. So a file is always a multiple of 4096 bytes. I think that some filesystems have a way around this (e.g. reiserfs) by combining small files.

    0 讨论(0)
提交回复
热议问题