Python的文件操作应遵循
libc约定,因为它是在内部使用C文件IO函数实现的。
从fopen手册页或cplusplus中的fopen页引用
对于允许追加输入和输出操作而打开的要追加的文件(带有“
+”号的文件),应在写入操作和随后的写入操作之间对流进行刷新(fflush)或重新定位(fseek,fsetpos,rewind)。读取操作或未到达文件末尾的读取操作,然后进行写入操作。
总结一下,如果需要在写入后读取文件,则需要
fflush缓冲区,读取后的写入操作应以开头
fseek,如
fd.seek(0,os.SEEK_CUR)
因此,只需将您的代码段更改为
with open("test1.txt", "r+b") as fd: print fd.read(4) fd.seek(0, os.SEEK_CUR) fd.write("----")该行为与类似的C程序的行为一致
#include <cstdio>int main(){ char buffer[5] = {0}; FILE *fp = fopen("D:\Temp\test1.txt","rb+"); fread(buffer, sizeof(char), 4, fp); printf("%sn", buffer); fseek(fp, 0, SEEK_CUR); fwrite("----",sizeof(char), 4, fp); fclose(fp); return 0;}


