0

Pythonで私はそれを見つけました:

a=open('x', 'a+')
a.write('3333')
a.seek(2)       # move there pointer
assert a.tell() == 2  # and it works
a.write('11')   # and doesnt work
a.close()

xファイルに与え333311ますが、4ではなく2バイトのオフセットで2番目の書き込みを行ったため、ファイルストリームポインターが変更されても、書き込みのためにシークが機能しません。

===> 私の質問: それは、より一般的な言語のプログラミング標準ですか?

4

3 に答える 3

0

mmapを試してください。基本的に、ファイルをその場で編集できます。ドキュメントから:

import mmap

# write a simple example file
with open("hello.txt", "wb") as f:
    f.write("Hello Python!\n")

with open("hello.txt", "r+b") as f:
    # memory-map the file, size 0 means whole file
    mm = mmap.mmap(f.fileno(), 0)
    # read content via standard file methods
    print mm.readline()  # prints "Hello Python!"
    # read content via slice notation
    print mm[:5]  # prints "Hello"
    # update content using slice notation;
    # note that new content must have same size
    mm[6:] = " world!\n"
    # ... and read again using standard file methods
    mm.seek(0)
    print mm.readline()  # prints "Hello  world!"
    # close the map
    mm.close()
于 2013-10-30T16:37:57.933 に答える