Python 刷新写入数字文件句柄的数据?

Python 刷新写入数字文件句柄的数据?,python,python-3.x,file-io,operating-system,Python,Python 3.x,File Io,Operating System,如何刷新作为数字文件句柄打开的文件中写入的内容 为了进行说明,可以在Python中执行以下操作: f = open(fn, 'w') f.write('Something') f.flush() 相反,在执行以下操作时,我缺少一种方法: import os fd = os.open(fn) os.pwrite(fd, buffer, offset) # How do I flush fd here? 使用os.fsync(fd)。有关fsync,请参阅 如果对从python文件对象获取的文件

如何刷新作为数字文件句柄打开的文件中写入的内容

为了进行说明,可以在Python中执行以下操作:

f = open(fn, 'w')
f.write('Something')
f.flush()
相反,在执行以下操作时,我缺少一种方法:

import os
fd = os.open(fn)
os.pwrite(fd, buffer, offset)
# How do I flush fd here?
使用
os.fsync(fd)
。有关
fsync
,请参阅

如果对从python文件对象获取的文件描述符执行
fsync
,请小心。在这种情况下,您需要首先刷新python文件对象。

使用
os.fsync(fd)
。有关
fsync
,请参阅


如果对从python文件对象获取的文件描述符执行
fsync
,请小心。在这种情况下,您需要首先刷新python文件对象。

我不明白第二个对象是否也在python中?@rarback是的,它是。我不明白第二个对象是否也在python中?@rarback是的,它是。AFAIK,严格地说,
fsync
不等于
flush
。两者都针对不同的缓冲区/缓冲级别。该文档还声明:如果您从一个缓冲的Python文件对象f开始,首先执行f.flush(),然后执行os.fsync(f.fileno()),以确保与f相关的所有内部缓冲区都写入磁盘。您是对的。当使用文件对象时,CPython使用例如
BufferedWriter
,其
flush
不执行任何低级
fsync
,它所做的只是对原始流进行低级
写入。我理解这个问题的方式是OP想要刷新文件描述符的内容,这正是
fsync
所做的(例如)AFAIK,严格地说,
fsync
不等于
flush
。两者都针对不同的缓冲区/缓冲级别。该文档还声明:如果您从一个缓冲的Python文件对象f开始,首先执行f.flush(),然后执行os.fsync(f.fileno()),以确保与f相关的所有内部缓冲区都写入磁盘。您是对的。当使用文件对象时,CPython使用例如
BufferedWriter
,其
flush
不执行任何低级
fsync
,它所做的只是对原始流进行低级
写入。我理解这个问题的方式是OP想要刷新文件描述符的内容,这正是
fsync
所做的(例如)