Python | os.fsync 函數

最近更新時間 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
rss_feed