我正在为Windows(不是cygwin!)和Mac编写一个跨平台程序。
我正在写入文件,然后立即尝试获取文件的新长度,而不先关闭文件。
我是否需要在写入后刷新文件,以保证获得准确的长度?
with open("myfile.bin", "r+b") as f:
f.seek(100)
f.truncate()
f.write("hello world")
# Do I need to f.flush here?
f.seek(0, 2) # seeks to end of file
fileSize = f.tell()
# Is fileSize guaranteed to be correct?
不,您不需要呼叫flush
。调用flush
来强制将缓冲区中的字节写入流。
除此之外,f.seek(0,2)
也不需要,因为文件位置已经在truncate
, write
方法调用之后的文件末尾。