Python | os.fsync 函数
Lasted 2020-12-09 12:18:43
os.fsync 函数强制将文件描述符 fd 指向的文件写入磁盘。在 Unix,这将调用原生 fsync() 函数;在 Windows,则是 MS_commit() 函数。
如果我们使用的是文件对象(例如 f)而不是文件描述符,那么我们需要先使用 f.flush() 然后使用 os.fsync(f.fileno()) 来确保所有内容被写入磁盘。
在 Unix 系统中还可使用 os.fdatasync(fd) 函数强制写入磁盘。
函数定义
os.fsync(fd)
# 函数定义
def fsync(fd: int) -> None: ...
兼容性:Unix 系统。
参数
- checkfd - 文件描述符。
返回值
- checkNone - 无。
示例1: - 使用 os.fsync() 函数强制将文件描述符 fd 指向的文件写入磁盘。
# coding=utf-8
# Python3 代码
# 讲解怎样使用 os.fsync() 函数参数为文件描述符
# 引入 os 库
import os
# 文件路径
path = "foo.txt"
# 使用 os.open 函数获取文件描述符
fd = os.open(path, os.O_RDWR)
# 写入数据
os.write(fd, b"fooooooooo")
# 数据可能在缓存中,强制写入数据到磁盘
os.fsync(fd)
print("Force write of file committed successfully")
# 关闭文件
os.close(fd)
Force write of file committed successfully
示例2: - 使用 os.fsync() 函数强制将文件对象缓存数据写入磁盘。
# coding=utf-8
# Python3 代码
# 讲解怎样使用 os.fsync() 函数参数为文件对象
# 引入 os 库
import os
# 文件路径
path = "foo.txt"
# 使用 open 函数获取文件对象
f = open(path, 'w')
# 写入数据
f.write("fooooooooo")
# 调用 f.flush() 方法刷新内部缓冲区
f.flush()
# 根据文件描述符强制写入数据
os.fsync(f.fileno())
print("Force write of file committed successfully")
# diao
f.close()
Force write of file committed successfully