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