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
,但我们用2个字节的偏移量进行了第二次写入,而不是4,
尽管文件流指针已经改变,但是搜索在那里不能用于写入。
===>我的问题:它是更流行语言的编程标准吗?
答案 0 :(得分:1)
附加模式的文件始终将write()
附加到文件的末尾,您可以看到here:
O_APPEND
如果设置,文件偏移量将在每次写入之前设置为文件的末尾。
答案 1 :(得分:1)
来自http://docs.python.org/2.4/lib/bltin-file-objects.html的文档:
请注意,如果打开文件进行追加(模式'a'或'a +'),则在下次写入时将撤消任何seek()操作。
以'r+'
模式打开文件,这意味着“读写”。
答案 2 :(得分: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()