Python 使用 os 模块处理文件

除了 open() 函数返回的 File 对象外,还可以使用 Python 的内置库执行文件 IO 操作,其中 os 模块提供了有用的操作系统相关函数。 这些函数对文件执行低级别的读/写操作。

os 模块中的open() 函数类似于内置的open()。 但是,它不返回文件对象,而是返回一个文件描述符,一个与打开的文件相对应的唯一整数。 文件描述符的值 0、1 和 2 代表标准输入、标准输出和标准错误流。 从 2 开始,其他文件将被赋予增量文件描述符。

open() 内置函数一样,os.open() 函数也需要指定文件访问模式。 下表列出了 os 模块中定义的各种模式。

序号 Os 模块 & 描述
1

os.O_RDONLY

只读

2

os.O_WRONLY

只为写入而打开

3

os.O_RDWR

以读写方式打开

4

os.O_NONBLOCK

打开时不阻塞

5

os.O_APPEND

在每次写入时追加

6

os.O_CREAT

文件不存在则创建

7

os.O_TRUNC

将大小截断为 0

8

os.O_EXCL

创建和文件存在时出错

要打开一个新文件并在其中写入数据,请通过插入竖线 (|) 运算符指定 O_WRONLY 以及 O_CREAT 模式。 os.open() 函数返回一个文件描述符。

f=os.open("test.dat", os.O_WRONLY|os.O_CREAT)

注意,数据以字节串的形式写入磁盘文件。 因此,像之前一样使用 encode() 函数将普通字符串转换为字节字符串。

data="Hello World".encode('utf-8')

os 模块中的 write() 函数接受这个字节串和文件描述符。

os.write(f,data)

不要忘记使用 close() 函数关闭文件。

os.close(f)

要使用 os.read() 函数读取文件内容,请使用以下语句:

f=os.open("test.dat", os.O_RDONLY)
data=os.read(f,20)
print (data.decode('utf-8'))

请注意,os.read() 函数需要文件描述符和要读取的字节数(字节字符串的长度)。

如果你想打开一个文件同时进行读/写操作,使用O_RDWR模式。 下表显示了 os 模块中重要的文件操作相关函数。

Sr.No 函数 & 描述
1

os.close(fd)

关闭文件描述符。

2

os.open(file, flags[, mode])

打开文件并根据 flags 设置各种标志,并可能根据 mode 模式设置其模式。

3

os.read(fd, n)

从文件描述符 fd 中读取至多 n 个字节。 返回包含读取的字节的字符串。 如果已到达 fd 引用的文件末尾,则返回一个空字符串。

4

os.write(fd, str)

将字符串 str 写入文件描述符 fd。 返回实际写入的字节数。