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