python 文件操作 和 标准库

一. 文件作用

用于永久储存数据,让程序下次执行时直接使用

二. 文件读写操作

文件操作流程

  1. 选择 操作模式打开文件
  2. 对文件进行读写操作
  3. 关闭文件

1. 读取文件数据

以只读形式打开文件分为两种操作模式分别是字符串“r”二进制(字节)“rb”

⑴ 打开文件

① “r” 以字符串的方式读取文件中的数据
格式为: 变量名 = open(“打开文件的路径及文件名”, “r”, encoding="utf-8")

  • 不指定路径仅有文件名, 表示操作当前目录中的文件
  • 若指定的文件不存在, 会报错
  • "r"默认打开文件操作模式, 即若不指定操作模式就会以"r"模式打开
  • 以该操作模式打开文件, 则仅能对全字符串文件做读取数据处理若出现非字符串数据( 图片、视频、音乐)会报错。
  • 由于 Windows系统python解释器默认使用GBK编码格式打开文件(不认识中文),因此需要指定编码格式为UTF-8。但是maclinuxpython解释器默认使用UTF-8

②"rb" 以字节(二进制)的方式读取文件中的数据
格式为: 变量名 = open(“打开文件的路径及文件名”, “rb”)

  • 不指定路径仅有文件名, 表示操作当前目录中的文件
  • 若指定的文件不存在, 会报错
  • 以该操作模式打开文件,可以对所有格式文件(包括图片、视频、音乐)进行读取数据处理操作,但是在显示时只会显示进制数字,不会显示为字符串、图片、视频等。

⑵ 读取文件内容

格式为: 变量名.read(读取数据个数)

  • 若不指定读取数据个数则会一次性将文件数据全部读取出来
  • 读取数据个数指定为100, 则表示最多读取文件中的100个字符(“r”)或字节(“rb”)
  • “r”模式中空格中文换行算一个字符
  • “rb”模式中空格算一个字节中文换行算三个字节, 并且在取中文的三个字节时若三个字节没取完整,读时会报错

格式为: 变量名.readline()

  • 默认表示读取一行内容
  • 若添加数字参数, 则表示读取参数所有字符(“r”)或字节(“rb”)所在行(如参数为100, 并且这100个字符(“r”)或字节(“rb”)占4行, 那么就会显示4行内容), 返回为一个列表其中包含多个字符串(一行内容为一个字符串), 换行使用\n表示 放在字符串末尾

格式为: 变量名.readlines()

  • 默认表示读取所有内容, 返回为一个列表其中包含多个字符串(一行内容为一个字符串), 换行使用\n表示 放在字符串末尾

注意:

  • 建议使用“rb”操作模式读取数据,因为其可以读取所有类型数据,若要显示字符串数据,则需要对读取到的数据进行 解码(将二进制转成字符串) 格式如下:读取到的二进制数据.decode("utf-8")
  • 在打开文件到关闭文件之间进行多个读取操作时, 其光标仅在第一次读取操作时从头开始,之后的读取操作光标的开始位置就是上个读取操作的光标结束位置
files = open("2.txt", "r", encoding="utf-8")
print(files.read(7))
print("-"*50)
print(files.readline())
print("-"*50)
print(files.readlines())
files.close()

执行结果为:|'abcd\n e'
		  |--------------------------------------------------
		  |'fg\n'
		  |--------------------------------------------------
		  |['hijk\n', ' lmn\n', ' opq\n', ' rst\n', ' uvw\n', ' xyz哈']
files = open("2.txt", "rb")
print(files.read(7).decode("utf8"), end="")
print("-"*50)
print(files.readline().decode("utf8"), end="")
print("-"*50)
print(files.readlines())
files.close()

执行结果为:|abcd
		  | --------------------------------------------------
		  |efg
		  |---------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值