Python | os.open 函数
怎样使用系统级函数打开文件
最近更新时间 2020-12-10 14:05:21
os.open 函数根据 path 路径 和 flags 标志位打开文件,并根据 mode 设置其权限状态。当计算 mode 时,会首先根据当前 umask 值将部分权限去除。本方法返回新文件的描述符。新的文件描述符不可继承。
flag 和 mode 参数说明参见函数定义,常用标志位(如 O_RDONLY 和 O_WRONLY)。在 Windows 上需要添加 O_BINARY 才能以二进制模式打开文件。
本函数适用于底层的 I/O 操作。常规用途请使用内置函数 open(),该函数的 read() 和 write() 方法(及其他方法)会返回 文件对象。要将文件描述符包装在文件对象中,请使用 fdopen()。
函数定义
os.open(path, flags, mode=0o777, *, dir_fd=None)
# 函数定义
def open(file: _PathType, flags: int, mode: int = ..., *, dir_fd: Optional[int] = ...) -> int: ...
# 标志位常量定义
O_RDONLY: int # os.O_RDONLY::0::0x0
O_WRONLY: int # os.O_WRONLY::1::0x1
O_RDWR: int # os.O_RDWR ::2::0x10
O_APPEND: int # os.O_APPEND::1024::0x10000000000
O_CREAT: int # os.O_CREAT ::64::0x1000000
O_EXCL: int # os.O_EXCL ::128::0x10000000
O_TRUNC: int # os.O_TRUNC ::512::0x1000000000
O_DSYNC: int # Unix only
O_RSYNC: int # Unix only
O_SYNC: int # Unix only
O_NDELAY: int # Unix only
O_NONBLOCK: int # Unix only
O_NOCTTY: int # Unix only
O_CLOEXEC: int # Unix only
O_SHLOCK: int # Unix only
O_EXLOCK: int # Unix only
O_BINARY: int # Windows only
O_NOINHERIT: int # Windows only
O_SHORT_LIVED: int # Windows only
O_TEMPORARY: int # Windows only
O_RANDOM: int # Windows only
O_SEQUENTIAL: int # Windows only
O_TEXT: int # Windows only
O_ASYNC: int # Gnu extension if in C library
O_DIRECT: int # Gnu extension if in C library
O_DIRECTORY: int # Gnu extension if in C library
O_NOFOLLOW: int # Gnu extension if in C library
O_NOATIME: int # Gnu extension if in C library
O_PATH: int # Gnu extension if in C library
O_TMPFILE: int # Gnu extension if in C library
O_LARGEFILE: int # Gnu extension if in C library
参数
- checkpath - 文件路径。
- checkflags - 操作标志位,详细参数参见函数定义。
- checkmode - [可选参数],默认为 0o777。
返回值
- checkint - 文件描述符。
示例1: - 使用 os.open() 函数打开文件。
# coding=utf-8
# Python3 代码
# 讲解怎样使用 os.open() 函数打开文件
# 引入 os 库
import os
# 文件路径
path = "foo.txt"
# 权限,可选、八进制
mode = 0o666
# 标志位
flags = os.O_RDWR | os.O_CREAT
# 使用 os.open 函数获取文件描述符
fd = os.open(path, flags, mode)
print("File path opened successfully.")
# 关闭文件
os.close(fd)
File path opened successfully.