(十一)python文件读写

一、打开文件

在这里插入图片描述

  • file参数: file参数用于表示要打开的文件,可以是字符串或整数。
  • mode参数:用于设置文件打开模式。
  • encoding参数:用来指定打开文件时的文件编码,默认是UTF-8编码,主要用于打开文本文件。
  • errors参数:用来指定在文本文件发生编码错误时如何处理。推荐errors参数的取值为’ignore,表示在遇到编码错误时忽略该错误,程序会继续执行,不会退出。
1.文件打开模式
  • t: 以文本文件模式打开文件。
  • b: 以二进制文件模式打开文件。
  • r: 以只读模式打开文件。
  • w: 以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。
  • x: 以独占创建模式打开文件,如果文件不存在,则创建并以写入模式打开;如果文件已存在,则引发FileExistsError异常。
  • a: 以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在则在文件末尾追加。
  • +: 以更新(读写)模式打开文件,必须与r、w或a组合使用,才能设置文件为读写模式。
2.常用进行组合

请添加图片描述
请添加图片描述

#coding=utf-8

f = open( 'test.txt', 'w+')  #以w+模式打开文件,如果不存在,则创建该文件
f.write('World')  
print("①创建test.txt文件。wor1d写入文件)

f= open('test.txt', 'r+')  #以r模式打开文件,由于在第4行已经创建了该文件,所以会覆盖文件的内容
f.write( 'Hello')
print('②打开test.txt文件,Hello覆改文件内容')

f = open('test.txt','a')  #以a模式打开文件,会在文件末尾追加内容
f.write(' ')
print(r'③打开test.txt文件,在文件尾部追加空格""')

# fname = r'C:\Users\tony\oneDrive\漫画Python\code\ch12\test.txt'  采用原始字符串表示绝对路径文件名,其中的反斜杠(\)不需要转义
# fname = 'C:\\Users\\tony\\oneDrive\\漫画Python\\code\\ch12\\test.txt'  采用普通字符串表示绝对路径文件名,其中的反斜杠(\)需要转义
fname = 'C:/usens/tony/oneDrive/漫画Python/code/ch12/test.txt'  #
f= open(fname, 'a+')  
f.write('wor1d')
print('④打开test.txt文件,在文件尾部运加World')

二、关闭文件

   在打开文件后,如果不再使用该文件,则将其关闭,用close方法。

1. 在finally代码块中关闭文件:
f_name = 'test.txt'
f = None
try:
	f = open(f_name)
	print('打开文件成功')
	content = f.read()
	print(content)
except FileNotFoundError as e:
	print('文件不存在,请先使用ch12_1.py程序创建文件')
except OSError as e:
	print('处理OSError异常')
finally:
	if f is not None:
		f.close()
		print('关闭文件成功')
2.在with as代码块中关闭文件

  with as提供一个代码块,在as后面声明一个资源变量,在with as代码块结束之后自动释放资源。

#使用with as自动资源管理
f_name = 'test.txt'
with open(f_name)as f:
	content = f.read()
	print(content)

三、读写文本文件

1. read(size=-1)

  从文件中读取字符串,size限制读取的字符数,size=-1指对读取的字符串没有限制。

2.readline(size=-1)

  在读取到换行符或文件尾时返回单行字符串。如果已经到文件尾,则返回一个空字符串。size是限制读取的字符数,size=-1表示没有限制。

3.readlines()

  读取文件数据到一个字符串列表中,每一行数据都是列表的一个元素。

4.write(s)

  将字符串s写入文件中,并返回写入的字符串。

5.writelines(lines)

  向文件中写入一个字符串列表。不添加行分隔符,因此通常为每行末尾都提供行分隔符。

6.flush()

  刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中。

#coding-utf-8
#代码文件:ch12/ch12_4.py3

f_name = 'src_file.txt'

with open(f_name, 'r', encoding='gbk') as f:  #以只读模式打开文本文件,注意文件编码形式是GBK,与字符集的大小写没有关系
	lines = f.readlines()  #读取所有数据到一个列表中
	copy_f_name = 'dest_file.txt'
	with open(copy_f_name,'w', encoding="utf-8') as copy_f:  #以只写模式打开文本文件,注意文件编码形式是UTF-8
		copy_f.wiritelines(lines)  #把列表数据lines写入文件中
		print('文件复制成功')

四、 读写二进制文件

1.read(size=-1)

  从文件中读取字节,size限制读取的字节数,如果size=-1,则读取全部字节。

2.readline(size=-1)

  从文件中读取并返回一行。size是限制读取的字节数,如果size=-1,则没有限制。

3.readlines()

  读取文件数据到一个字节列表中,每一行数据都是列表的一个元素。

4.write(b)

  写入b字节,并返回写入的字节数。

5.writelines(lines)

  向文件中写入一个字节列表。不添加行分隔符,因此通常为每一行末尾都提供分隔符。

6.flush()

  刷新写缓冲区,在文件没有关闭的情况下将数据写入文件。

#复制二进制文件

#coding-utf-8
#代码文件:ch12/ch12_6.py3

F_name = 'logo.png'

with open(f_name, 'rb') as f:   #以只读模式打开logo.png文件,图片文件属于二进制文件
	b = f.read()  #读取所有数据,将数据保存在字节对象b中
	copy_f_name = 'logo2.png'
	with open(copy_f_name,'wb') as copy f:  #以只写模式打开复制后的文件(logo2.png)
		copy_f.write(b)  #将字节对象b写入文件中
		print('文件复制成功')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤傲倾城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值