Python Data Persistence 简明教程
File Handling with os Module
除了 open() 函数返回的文件对象,还可以使用 Python 内置库的 os 模块执行文件 IO 操作,该模块提供了实用的操作系统相关函数。这些函数对文件执行低级别的读/写操作。
os 模块中的 open() 函数类似于内置 open()。但是,它不返回文件对象,而是返回文件描述符,它是一个与打开的文件相对应的唯一整数。文件描述符的值 0、1 和 2 分别表示标准输入、标准输出和标准错误流。其他文件将从 2 开始获得递增的文件描述符。
与 open() 内置函数的情况类似, os.open() 函数也需要指定文件访问模式。下表列出 os 模块中定义的各种模式。
Sr.No. |
Os Module & Description |
1 |
os.O_RDONLY Open for reading only |
2 |
os.O_WRONLY Open for writing only |
3 |
os.O_RDWR 打开以进行读写 |
4 |
os.O_NONBLOCK 在打开时不会阻塞 |
5 |
os.O_APPEND Append on each write |
6 |
os.O_CREAT 如果文件不存在,则创建文件 |
7 |
os.O_TRUNC Truncate size to 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 |
Functions & Description |
1 |
os.close(fd) Close the file descriptor. |
2 |
os.open(file, flags[, mode]) 打开文件,根据标志设置各种标志,并可能根据模式设置其模式。 |
3 |
os.read(fd, n) 从文件描述符 fd 最多读取 n 个字节。返回包含已读取字节的字符串。如果已到达 fd 引用的文件的末尾,则返回一个空字符串。 |
4 |
os.write(fd, str) 将字符串 str 写入文件描述符 fd。返回实际写入的字节数。 |