资源简介 (共16张PPT)10、文件3.2 Python语言程序设计Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。open(file, mode='r')读和写文件filen:包含了你要访问的文件名称的字符串值。mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。完整的语法格式为:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)参数说明:file: 必需,文件路径(相对或者绝对路径)。mode: 可选,文件打开模式buffering: 设置缓冲encoding: 一般使用utf8errors: 报错级别newline: 区分换行符closefd: 传入的file参数类型opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。读和写文件读和写文件模式 描述'r' 以只读方式打开文件(默认)'w' 以只写方法打开文件。若文件不存在,则新建文件;如果文件已存在,则清空文件原有内容'x' 以独占只写方式打开文件。若文件不存在,则新建文件;如果文件已存在,则抛出FileExistsError异常'a' 以只写方法打开文件。若文件不存在,则新建文件;如果文件已存在,在文件原有内容末尾追加内容'b' 二进制文件模式't' 文本文件模式(默认)'+' 更新(读写)方式打开文件mode 参数有:默认为文本模式,如果要以二进制模式打开,加上 b 。读和写文件读和写文件以下实例将字符串写入到文件 foo.txt 中:# 打开一个文件f = open("/tmp/foo.txt", "w")f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )# 关闭打开的文件f.close()第一个参数为要打开的文件名。第二个参数描述文件如何使用的字符。 mode 可以是 'r' 如果文件只读, 'w' 只用于写 (如果存在同名文件则将被删除), 和 'a' 用于追加文件内容; 所写的任何数据都会被自动增加到末尾. 'r+' 同时用于读写。 mode 参数是可选的; 'r' 将是默认值。读和写文件此时打开文件 foo.txt,显示如下:$ cat /tmp/foo.txtPython 是一个非常好的语言。是的,的确非常好!!file对象的方法file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:序号 方法及描述1 file.close()关闭文件。关闭后文件不能再进行读写操作。2 file.read([size])从文件读取指定的字节数,如果未给定或为负则读取所有。3 file.readline([size])读取整行,包括 "\n" 字符。4 file.readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。5 file.write(str)将字符串写入文件,返回的是写入的字符长度。6 file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。f.read()为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。以下实例假定文件 foo.txt 已存在(上面实例中已创建):# 打开一个文件f = open("/tmp/foo.txt", "r")str = f.read()print(str)# 关闭打开的文件f.close()执行以上程序,输出结果为:Python 是一个非常好的语言。是的,的确非常好!!假设已经创建了一个称为 f 的文件对象。f.readline()f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。# 打开一个文件f = open("/tmp/foo.txt", "r")str = f.readline()print(str)# 关闭打开的文件f.close()执行以上程序,输出结果为:Python 是一个非常好的语言。f.readlines()f.readlines() 将返回该文件中包含的所有行。如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。# 打开一个文件f = open("/tmp/foo.txt", "r")str = f.readlines()print(str)# 关闭打开的文件f.close()执行以上程序,输出结果为:['Python 是一个非常好的语言。\n', '是的,的确非常好!!\n']f.readlines()另一种方式是迭代一个文件对象然后读取每行:# 打开一个文件f = open("/tmp/foo.txt", "r")for line in f:print(line, end='')# 关闭打开的文件f.close()执行以上程序,输出结果为:Python 是一个非常好的语言。是的,的确非常好!!这个方法很简单, 但是并没有提供一个很好的控制。 因为两者的处理机制不同, 最好不要混用。f.write()f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。# 打开一个文件f = open("/tmp/foo.txt", "w")num = f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )print(num)# 关闭打开的文件f.close()执行以上程序,输出结果为:29f.write()如果要写入一些不是字符串的东西, 那么将需要先进行转换:# 打开一个文件f = open("/tmp/foo1.txt", "w")value = ('www.', 14)s = str(value)f.write(s)# 关闭打开的文件f.close()执行以上程序,打开 foo1.txt 文件:$ cat /tmp/foo1.txt('www.', 14)f.close()在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。>>> f.close()>>> f.read()Traceback (most recent call last):File "", line 1, in ValueError: I/O operation on closed file当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短:>>> with open('/tmp/foo.txt', 'r') as f:... read_data = f.read()>>> f.closedTrue 展开更多...... 收起↑ 资源预览