900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 打开文件 文本文件的读写 二进制文件的读写

打开文件 文本文件的读写 二进制文件的读写

时间:2024-02-03 00:20:52

相关推荐

打开文件 文本文件的读写 二进制文件的读写

一、打开文件

文件的操作步骤:

• 打开文件

• 对文件进行各种操作(读、写)然后保存

• 关闭文件

文件会有一个返回值。返回一个对象,这个对象就表示的是当前的文件。

先在桌面创建一个两行内容为‘刘亦菲’‘刘德华’的txt文件,如图:

调用open()来打开一个文件,可以将文件分为2中类型

• 一种 纯文本文件(使用utf-8编码编写的文件)

• 一种 二进制文件(图片 mp3 视频…)

open()打开文件时,默认是以文本文件的形式打开的。

1、open()函数

open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

常用形式是接收两个参数:文件名(file)和模式(mode)

使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数。

参数说明:

file: 必需,文件路径(相对或者绝对路径)。

mode: 可选,文件打开模式

buffering: 设置缓冲

encoding: 一般使用utf8

errors: 报错级别

newline: 区分换行符

closefd: 传入的file参数类型

opener:

mode 参数有:

模式 描述

t 文本模式 (默认)。

x 写模式,新建一个文件,如果该文件已存在则会报错。

b 二进制模式。

打开一个文件进行更新(可读可写)。

U 通用换行模式(不推荐)。

r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

r+ 打开一个文件用于读写。文件指针将会放在文件的开头。

rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

默认为文本模式,如果要以二进制模式打开,加上 b 。

例如:

file_name=r'C:\Users\01\Desktop\test.txt'#绝对路径obj=open(file_name)#open返回对象就是当前打开的这个文件file_namecontent=obj.read()#对这个打开的文件进行读写等操作print(content)obj.close()obj.read()

结果:

报错,即表示文件关闭状态不能读。

2、with()函数(上下文管理器),不用写close()来关闭,它自带关闭。

file_name=r'C:\Users\01\Desktop\test.txt'with open(file_name) as f:content=f.read()print(content)f.read()

结果:

3、一般会结合着try except使用

file_name=r'C:\Users\01\Desktop\1.txt'try:with open(file_name) as f:content=f.read()print(content)except:print(f'{file_name}文件不存在')

结果:

4、文件的读取

(1)通过read()来读取文件的内容

• 通过read()读取文件内容时会将文件中所有的内容全部读取出来。

• read()可以接收一个size作为的参数,该参数用来指定要读取字符的数量。默认值为-1.-1也就是要读取全部的内容。如果字符的数量小于size,则会读取所有的;如果读取到最后的文件,则会返回空串。

• 每次读取都会从上次读取到的位置开始(并覆盖掉上一次的)。

(2)较大文件的读取

• 如果对于读取的文件比较大的话。一次性的将文件加载到内容中,容易导致内存泄露。所以对于较大的文件,不要直接调用read()

• readline() 该方法用来读取一行(并覆盖掉上一次的)

• readlines() 该方法用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表当中返回。

file_name=r'C:\Users\01\Desktop\test.txt'try:with open(file_name) as f:content=f.read(2)print(content)except:print(f'{file_name}文件不存在')

结果:

file_name=r'C:\Users\01\Desktop\test.txt'try:with open(file_name) as f:content=f.read(2)content=f.read(2)#覆盖掉上一次的读取print(content)except:print(f'{file_name}文件不存在')

结果:

5、对于覆盖的处理

file_name=r'C:\Users\01\Desktop\test.txt'try:with open(file_name) as f:for i in range(2):content=f.readline()print(content)except:print(f'{file_name}文件不存在')

结果:

6、写入

write()来向文件中写入内容

• 该方法可以分多次向文件写入内容

• 写入完成之后该方法会返回写入的字符的个数

使用open()函数打开文件时,必须要指定打开文件要做的操作(读、写、追加)。如果不指定操作类型,则默认是读取文件,而读取文件是不能向文件中写入

• r 表示只读

• w表示可以写。使用w写入文件时,如果文件不存在则会创建一个文件。如果文件存在则会覆盖原文件内容。

由上图可知,txt文件中原有的内容被覆盖掉了。

7、二进制文件的读写操作

二进制文件:指视频、音频、图片等。

读取文本文件时,size是以字符为单位。读取二进制文件时,size是以字节为单位。

我们用wb来写入二进制文件。

file_name=r'C:\Users\01\Desktop\文末.jpg'with open(file_name,'rb') as f:content=f.read()print(content)

结果:

又如:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。