Python纯文件文本和非文件文本的读写以及上下文管理器

本文详细介绍了Python中读取和写入纯文本文件、二进制文件的方法,包括不同模式(如'r', 'w', 'a'等)的使用情况和上下文管理器的应用。通过多个实验展示了如何打开、关闭文件,以及在文件指针移动、读取文件内容等方面的操作。此外,还讨论了非纯文本文件的读取,如二进制图片文件的读写。" 137483071,5746065,Yolov8 NCNN模型导出与关键点检测部署实战,"['目标检测', '深度学习', '计算机视觉', '模型转换', '推理框架']
摘要由CSDN通过智能技术生成

1.读取纯文本文件–文件及文件读写

打开文件的三步:打开->操作->关闭
注意:
1.最大可以打开的文件的数量
2.打开后关闭的原因是因为这样不会浪费文字描述符
读取文本文件:
r r+ w w+ a a+
读取二进制文件:
rb rb+ wb wb+ ab ab+

文件读写:

r:(默认)
-只能读,不能写
-读取文件不存在,会报错

r+:
-可读写
-读取文件不存在,会报错

w:
-write only
-会清空文件之前的内容
-文件不存在,不会报错,会创建新的文件并写入

w+:
-rw
-会清空文件内容
-文件不存在,不报错,会创建新的文件

a:
-write only
-不会清空文件内容
-文件不存在,不会报错,会创建新的文件并写入

a+:
-rw
-文件不存在不报错
-不会清空文件内容
注意:
工作中一般不用’*+‘

实验:
1.打开关闭文件的实验如下:
-------->(1)题目要求:
举例说明如何打开并关闭文件,同时要求将文件中的内容输出
-------->代码如下:
<1>首先将/etc/passwd 备份到/tmp/passwd下(其目的仅仅为了证明文件的内容不会丢失或影响)

[root@foundation66 ~]# cp /etc/passwd /tmp/passwd

<2>在python的IDE中写入以下代码:

#打开文件
f=open('/tmp/passwd')
#读操作
content=f.read()
print(content)
#关闭
f.close()

-------->测试结果:
在这里插入图片描述
在这里插入图片描述

-------->(2)题目要求:
尝试显示文件的是否可写或可读
-------->代码如下:

#打开文件
f=open('/tmp/passwd')
print(f.writable())
print(f.readable())
#关闭
f.close()

-------->测试结果:
结果说明,此文件不可写,但可以读
在这里插入图片描述

2.关于r的实验:
-------->(1)题目要求:
r:如果文件存在时,可以进行读操作
-------->代码如下:

#打开文件
f=open('/tmp/passwd','r')
#读操作
content=f.read()
print(content)
print(f.writable())
print(f.readable())
#关闭
f.close()

-------->测试结果:
在这里插入图片描述

-------->(2)题目要求:
r:如果文件不存在时,会出现报错
-------->代码如下:

#打开文件
f=open('/tmp/passwdd','r')
#读操作
content=f.read()
print(content)
print(f.writable())
print(f.readable())
#关闭
f.close()

-------->测试结果:
在这里插入图片描述

-------->(3)题目要求:
r+:如果文件存在时,可以对文件进行读写操作
-------->代码如下:
<1>更改/tmp/passwd的文件权限为777

[root@foundation66 ~]# chmod 777 /tmp/passwd
[root@foundation66 ~]# ll /tmp/passwd

<2>在python中写入的代码如下:

#打开文件
f=open('/tmp/passwd','r+')
#读操作
content=f.read()
print(content)
#写操作
f.write('hello')
print(f.writable())
print(f.readable())
#关闭
f.close()

注意:
此处的写操作无法读出文件的内容是因为指针移动了,如果想要直接读取文件的内容,需要将指针重新移到0,在命令行式shell中可以查看到更改的信息:

-------->测试结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值