python231122-open() 函数读取整个文件

open() 函数用于打开一个文件,并返回一个文件对象,该文件对象可以用于读取、写入或追加文件。

open() 函数的语法如下:
open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:

* file:要打开的文件名。可以是字符串、元组或文件描述符。如果是字符串,则表示文件的路径;如果是元组,则表示(文件名,模式)元组;如果是文件描述符,则表示要打开的文件描述符。
* mode:打开文件的模式。可以是 ‘r’、’w’、’a’、’rb’、’wb’、’ab’ 或 ‘r+’、’w+’、’a+’、’rb+’、’wb+’、’ab+’。
* ‘r’:以只读方式打开文件。
* ‘w’:以只写方式打开文件。如果文件存在,则会清空文件内容。
* ‘a’:以追加方式打开文件。如果文件不存在,则会创建一个新文件。
* ‘rb’:以二进制只读方式打开文件。
* ‘wb’:以二进制只写方式打开文件。如果文件存在,则会清空文件内容。
* ‘ab’:以二进制追加方式打开文件。如果文件不存在,则会创建一个新文件。
* ‘r+’:以读写方式打开文件。
* ‘w+’:以读写方式打开文件。如果文件存在,则会清空文件内容。
* ‘a+’:以读写方式打开文件。如果文件不存在,则会创建一个新文件。
* ‘rb+’:以二进制读写方式打开文件。
* ‘wb+’:以二进制读写方式打开文件。如果文件存在,则会清空文件内容。
* ‘ab+’:以二进制读写方式打开文件。如果文件不存在,则会创建一个新文件。
* buffering:缓冲区的大小。默认值为 -1,表示使用系统默认的缓冲区大小。
* encoding:文件的编码方式。如果没有指定,则会使用系统默认的编码方式。
* errors:错误处理方式。可以是 ‘strict’、’ignore’、’replace’ 或 ‘backslashreplace’。
* ‘strict’:如果出现编码错误,则会抛出 ValueError 异常。
* ‘ignore’:如果出现编码错误,则会忽略错误。
* ‘replace’:如果出现编码错误,则会用 ‘?’ 替换错误字符。
* ‘backslashreplace’:如果出现编码错误,则会用 ‘\x’ 加上错误字符的十六进制编码替换错误字符。
* newline:换行符。可以是 ‘\n’、’\r’、’\r\n’ 或 None。
* ‘\n’:表示使用 ‘\n’ 作为换行符。
* ‘\r’:表示使用 ‘\r’ 作为换行符。
* ‘\r\n’:表示使用 ‘\r\n’ 作为换行符。
* None:表示使用系统默认的换行符。
* closefd:是否在文件对象关闭时关闭文件描述符。默认值为 True。
* opener:用于打开文件的对象。如果指定了 opener,则会使用 opener 对象来打开文件,而不是使用 open() 函数。

以下是 open() 函数的使用示例:
实例一:

# 以只读方式打开一个文件
file = open('test.txt', 'r')

# 读取文件内容
content = file.read()

# 关闭文件
file.close()

# 以只写方式打开一个文件
file = open('test.txt', 'w')

# 写入文件内容
file.write('Hello, world!')

实例二:

with open('pi_digits.txt') as file_object:
    contents = file_object.read()
print(contents)

在这个程序中,第一行代码做了大量的工作。我们先来看看函数open()。要以任何方式使用文件,那怕仅仅是打印其内容,都得先打开文件,才能访问它。函数open()接受一个参数:要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。在本例中,当前运行的是file_reader.py,因此Python在file_reader.py所在的目录中查找pi_digits.txt。函数open()返回一个表示文件的对象。在这里,open(‘pi_digits.txt’)返回一个表示文件pi_digits.txt的对象,Python将该对象赋给file_object供以后使用。

关键字with在不再需要访问文件后将其关闭。在这个程序中,注意到我们调用了open(),但没有调用close()。也可以调用open()和close()来打开和关闭文件,但这样做时,如果程序存在bug导致方法close()未执行,文件将不会关闭。这看似微不足道,但未妥善关闭文件可能导致数据丢失或受损。如果在程序中过早调用close(),你会发现需要使用文件时它已关闭(无法访问),这会导致更多的错误。并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用前面所示的结构,可让Python去确定:你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。有了表示pi_digits.txt的文件对象后,使用方法read()(前述程序的第二行)读取这个文件的全部内容,并将其作为一个长长的字符串赋给变量contents。这样,通过打印contents的值,就可将这个文本文件的全部内容显示出来。

发表评论