Python | os.pwritev 函數
怎樣寫入緩衝區字節串數組
最近更新時間 2020-12-12 12:54:49
os.pwritev 函數將緩衝區 buffers 的內容寫入文件描述符 fd 的偏移位置 offset 處,保持文件偏移量不變。緩衝區 buffers 必須是由 字節類對象 組成的序列。緩衝區以數組順序處理。先寫入第一個緩衝區的全部內容,再寫入第二個緩衝區,照此繼續。返回實際寫入的字節總數。
操作系統可能對允許使用的緩衝區數量有限制(使用 sysconf() 獲取 'SC_IOV_MAX' 值)。
函數定義
os.pwritev(fd, buffers, offset, flags=0)
# 函數定義
if sys.platform != 'win32':
# Unix only
...
def pwritev(__fd: int, __buffer: bytes[], __offset: int, __flags: int = 0) -> int: ...
...
兼容性:Linux 2.6.30 或更高版本,FreeBSD 6.0 或更高版本,OpenBSD 2.7 或更高版本,AIX 7.1 或更高版本。使用標誌位需要 Linux 4.7 或更高版本。
版本:3.7 新版功能。
參數
- checkfd - 文件描述符。
- checkbuffers - 緩衝區數組。
- checkoffset - 文件偏移量。
- checkflags - 操作標誌位,可進行或運算。
- os.RWF_DSYNC=2 提供立即寫入功能,等效於 O_DSYNC open(2) 標誌。該標誌僅作用於系統調用寫入的數據。
- os.RWF_SYNC=4 提供立即寫入功能,等效於 O_SYNC open(2) 標誌。該標誌僅作用於系統調用寫入的數據。
返回值
- checkint - 返回實際寫入的字節總數。
示例1: - 使用 os.pwritev() 函數寫入緩衝區數組。
# coding=utf-8
# Python3 代碼
# 講解怎樣使用 os.pwritev() 函數寫入緩衝區數組
# 引入 os 庫
import os
# 文件路徑
path = "foo.txt"
# 使用 os.open 函數打開文件
fd = os.open(path, os.O_RDWR)
# 使用 os.pwritev 函數
# 寫入字節數組
buffer1 = bytearray(b"Python")
buffer2 = bytearray(b"PHP")
len = os.pwritev(fd, [buffer1, buffer2], 3)
# 緩衝的字符長度
print('Length::', len)
# 讀取文件內容
with open(path) as f:
print(f.read())
# 關閉文件
os.close(fd)
Length:: 9 fooPythonPHP
fd 文件描述符需要可寫權限,否則拋出 OSError 異常 OSError: [Errno 9] Bad file descriptor
。