Python 刷新写入数字文件句柄的数据?
如何刷新作为数字文件句柄打开的文件中写入的内容 为了进行说明,可以在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文件对象获取的文件
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
所做的(例如)