文件的打开方式 | 学习笔记

简介: 快速学习 文件的打开方式

开发者学堂课程【Python入门 2020年版文件的打开方式】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10397


文件的打开方式


内容简介

一、回顾

二、三种主要模式

三、其它模式


一、回顾

在上次讲了 open 的参数,有 filemode encoding

# file:用来指定打开的文件(不是文件的名字,而是文件的路径)

#mode :打开文件时的模式,默认是 r 表示只读。

#encoding:打开文件时的编码方式。


二、三种主要模式

mode 指的是打开文件的打开方式

打开方式有:

1r:只读模式,默认,打开文件以后,只能读取不能写入。如果文件不存在,会报错。

输入代码

file=open('xxx.txt','r')

print(file.read())

file.close()

运行结果为 今天天气好晴朗

这时可以读到该内容,但是现在是否可以进行写入呢?注释掉 print(file.read()),输入

file.write('hello')再来运行,结果会报错,显示 io.UnsupportedOperation: not writable 不能够写入,不能执行写入操作,会报错

注释掉以上代码再来输入

file=open('xs.txt','r')

file.close()

该文件不存在,试着运行,结果显示报错

2w:写入模式,打开文件以后只能写入,不能读取。如果文件存在,会覆盖文件;如果文件不存在,会创建文件。

输入代码:

file=open('xxx.txt','w')

file.read()

file.close()

运行报错显示:not readable  不能够执行读取,会报错

另外此时是以 w 打开 xxx 文件,打开后没有内容,会覆盖掉,再来写入内容:输入

file.write('hello')

xxx.txt 文件中会显示出 hello

如果不存在,例如输入

file=open('yyy.txt','w')

本来文件不存在,运行以后,新建了一个 yyy 文件

3b:以二进制的形式打开文件,可以用来操作非文本文件。

rb:以二进制读取     wb:以二进制写入

现在 xxx.txt 中将 hello 修改为你好,然后继续输入代码:

file=open('xxx.txt','rb')

print(file.read())

运行结果显示 b’\xc4\xe3\xba\xc3’,读取的结果是二进制

再来输入

file=open('xxx.txt','wb')

file.write('大家好才是真的好')

运行结果报错,TypeError: a bytes-like object is required,

not’str’,只能写入二进制,修改代码为

file.write('大家好才是真的好'.encode('utf8'))

运行后查看 xxx.txt 结果就显示为 大家好才是真的好

(思考 wb 二进制有什么用?

我们现在读的文本都是文字,如果现在想要加载一个图片,像类似这种读一些非文字就可以使用二进制)


三、其它模式

1a:追加模式,会在最后追加内容。如果文件不存在,会创建文件;如果文件存在,会追加

2r+:可读写。如果文件不存在,会报错

3w+:可读写。如果文件存在,会覆盖文件;如果文件不存在,会创建文件。这两种可读可写方式不常用。在开发时,不会使用这类操作。存在一个指针问题,先来输入代码演示:

file=open('yyy.txt','w+')

print(file.read())

file.close()

yyy.txt 中添加内容:呵呵呵,我是 yyy

再来运行,结果未报错,但是无内容,此时 yyy.txt 中页无内容,被覆盖再来添加代码:

file.write('哈哈哈')

运行结果仍没有内容,但是 yyy.txt 中存在哈哈哈

因为在 yyy.txt 中输入哈哈哈时,光标在最后,所以读不到东西

如果需要可以添加:

file.seek(0,0)  

运行结果就为哈哈哈

写入之后,文件指针到最后,需要调用 seek 将文件指针重置到开头

w+、r+此类操作不常用,一般情况下只做单一的文件操作,要么读要么写

此外还有一些别的形式可以了解:

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

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

rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

相关文章
|
7月前
|
安全 数据安全/隐私保护 C++
HTTPS ECDHE 握手全解析
HTTPS ECDHE握手详解:基于椭圆曲线的临时密钥交换,实现前向保密与高效安全。解析TLS 1.2下客户端与服务器如何通过6步完成密钥协商,对比RSA握手机制,揭示ECDHE为何成为现代网站标配。
759 1
|
2月前
|
人工智能 开发框架 开发工具
TIOBE 2026年6月TOP15编程语言排行榜
Python连续近5年稳居TIOBE榜首(18.96%),PYPL亦居第一,实现“双榜制霸”。AI大模型爆发使其成为绝对核心:驱动近半数新增AI项目,OpenAI、Claude及文心一言、通义千问等主流框架均以Python为首选开发语言。入局AI,Python是唯一必选站。
|
XML 存储 分布式计算
hbase构建二级索引解决方案
HBase的一级索引就是rowkey,我们仅仅能通过rowkey进行检索。假设我们相对Hbase里面列族的列列进行一些组合查询,就只能全表扫描了。表如果较大的话,代价是不可接受的,所以要提出二级索引的方案。
1507 0
hbase构建二级索引解决方案
|
5月前
|
存储 弹性计算 固态存储
阿里云服务器ECS按量付费是什么计费方式?划算吗?2026最新付费模式整理
阿里云ECS按量付费是“先用后付、按小时计费”的灵活模式,适合临时扩展、测试、电商抢购等短期场景。开通需账户余额≥100元,不支持备案。相比包年包月更省成本,尤其适用于使用时长不确定或突发流量场景。(239字)
716 10
|
7月前
|
人工智能 自然语言处理 Cloud Native
2026年企业级智能客服系统建设方案:“三层一体”智能服务体系
2026年智能客服迈向全链路价值中枢,依托AI大模型与云原生技术,构建“三层一体”智能服务体系。以瓴羊Quick Service为标杆,实现降本增效、体验升级与增长赋能,推动客服从成本中心向利润中心转型,开启“服务即增长”新范式。
|
SQL 流计算
Flink SQL 功能解密系列 —— 数据去重的技巧和思考
去重逻辑在业务处理中使用广泛,大致可以分两类:DISTINCT去重和FIRST_VALUE主键去重,两者的区别是DISTINCT去重是对整行数据进行去重,比如tt里面数据可能会有重复,我们要去掉重复的数据;FIRST_VALUE是根据主键进行去重,可以看成是一种业务层面的去重,但是真实的业务场景使用也很普遍,比如一个用户有多次点击,业务上只需要取第一条。
MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。
在比赛中遇到了MP的并列柱状图,看网上对这方面记录并不是很多,所以今天就做一个教程吧。
602 0
MPAndroidChart_并列柱状图,及如何实现点击隐藏掉不需要的条目。
|
缓存 算法 网络协议
Ch3.数据链路层(四)
数据链路层是OSI参考模型中的第二层,介乎于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自物理层来的数据可靠地传输到相邻节点的目标机网络层。
1275 0
|
API Python
python 通过 github api 上传图片,实现免费的图床
python 通过 github api 上传图片,实现免费的图床
1528 0
|
机器学习/深度学习 自然语言处理 算法
Python数据分析(4):jieba分词详解
Python数据分析(4):jieba分词详解
1744 0
Python数据分析(4):jieba分词详解

热门文章

最新文章