Python | os.fdatasync 函数

Lasted 2020-12-08 12:28:37

os.fdatasync 函数强制将文件描述符 fd 指定文件写入磁盘。不强制更新元数据。与 os.fsync() 方法不同,它不会强制更新元数据。

该功能在 MacOS 中不可用。

os.fdatasync() 方法比os.fsync() 方法更快,因为它只需要强制一次写入磁盘而不是两次。

文件描述符是一个数字,用于唯一标识计算机操作系统中打开的文件。它描述了数据资源,以及如何访问该资源。

在类Unix操作系统上,默认情况下,前三个文件描述符为STDIN(标准输入 0),STDOUT(标准输出 1)和STDERR(标准错误 2)。

可以用 io.fileno() 可以获得 file object 所对应的文件描述符。需要注意的是,直接使用文件描述符会绕过文件对象的方法,会忽略如数据内部缓冲等情况。

函数定义

os.fdatasync(fd)
# 函数定义

if sys.platform != 'win32':
    # Unix only
    ...
    def fdatasync(fd: int) -> None: ...  # Unix only, not Mac
    ...

兼容性:Unix 系统。

参数

  • checkfd - 源文件描述符。

返回值

  • checkNone - 无。

示例1: - 使用 os.fdatasync() 函数强制将指定文件写入磁盘。

# coding=utf-8

# Python3 代码
# 讲解怎样使用 os.fdatasync() 函数强制将指定文件写入磁盘

# 引入 os 库
import os

# 文件路径
path = "foo.txt"

# 根据路径打开文件
fd = os.open(path, os.O_WRONLY)

# 写入 byte 字符串
os.write(fd, b"foofoofoo")

# 写入的内容可能在缓存中没有写入到磁盘
# 程序结束或者文件描述符关闭时才会写入
# 可以使用 os.fdatasync() 强制写入
os.fdatasync(fd)
print("Force write of file committed successfully") 

# Close the file descriptor  
os.close(fd)
Force write of file committed successfully