📅  最后修改于: 2020-11-07 08:22:28             🧑  作者: Mango
除了open()函数返回的File对象外,还可以使用Python的内置库os模块执行文件IO操作,该模块提供了有用的操作系统相关功能。这些功能对文件执行低级读/写操作。
os模块中的open()函数类似于内置的open()。但是,它不返回文件对象,而是返回文件描述符,文件描述符是与打开的文件相对应的唯一整数。文件描述符的值0、1和2代表stdin,stdout和stderr流。从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 Open for reading and writing |
4 |
os.O_NONBLOCK Do not block on open |
5 |
os.O_APPEND Append on each write |
6 |
os.O_CREAT Create file if it does not exist |
7 |
os.O_TRUNC Truncate size to 0 |
8 |
os.O_EXCL Error if create and file exists |
要打开用于在其中写入数据的新文件,请通过插入管道(|)运算符指定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]) Open the file and set various flags according to flags and possibly its mode according to mode. |
3 |
os.read(fd, n) Read at most n bytes from file descriptor fd. Return a string containing the bytes read. If the end of the file referred to by fd has been reached, an empty string is returned. |
4 |
os.write(fd, str) Write the string str to file descriptor fd. Return the number of bytes actually written. |