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

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

开发者学堂课程【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+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

相关文章
|
算法
【MATLAB】语音信号识别与处理:T1小波滤波算法去噪及谱相减算法呈现频谱
【MATLAB】语音信号识别与处理:T1小波滤波算法去噪及谱相减算法呈现频谱
388 0
|
缓存 达摩院 Kubernetes
数据缓存系列分享(六):通义千问Qwen-14B大模型快速体验
阿里达摩院近期对通义千问大模型 Qwen-14B 进行了开源(之前开源的是Qwen-7B模型),目前在ModelScope和HuggingFace上均可直接下载。关于Qwen-7B的搭建可以参考我们之前的文章:数据缓存系列分享(五):开源大语言模型通义千问快速体验版,本文将使用一样的方式打开Qwen-14B,快速体验一下。
2456 0
数据缓存系列分享(六):通义千问Qwen-14B大模型快速体验
|
人工智能 Serverless 云栖大会
通义星尘、通义灵码、镇岳510……一文了解2023云栖重大发布!
今天,2023云栖大会进行至第2天。 本届云栖大会,我们发布了千亿级参数规模的大模型通义千问2.0、一站式模型应用开发平台阿里云百炼以及8个行业大模型,同时全面升级了人工智能平台PAI,并对超40款云产品提供了Serverless的能力,推出全球首款容器计算服务ACS。
56716 35
|
存储 算法 搜索推荐
时间复杂度:一步步理解算法效率
时间复杂度:一步步理解算法效率,更多文章可关注我的微信公众号:Python学习杂记
1365 0
|
数据库 Android开发
Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)
Android Studio开发之应用组件Application的讲解及实战(附源码,通过图书管理信息系统实战)
861 1
|
前端开发 Java Shell
Webstorm安装激活破解2022.09.07最新破解教程「永久激活,亲测有效」
本文讲的是2022.2.1版本的Webstorm破解、Webstorm激活码、Webstorm安装、Webstorm永久激活码的最新永久激活教程,本文有mac和windows系统的idea安装教程。
8705 0
Webstorm安装激活破解2022.09.07最新破解教程「永久激活,亲测有效」
|
12月前
|
存储 NoSQL 安全
【赵渝强老师】MongoDB的Journal日志
MongoDB通过Journal日志保证数据安全,记录检查点后的更新,确保数据库从异常中恢复到有效状态。每个Journal文件100M,存于--dbpath指定的journal子目录。默认已启用Journal日志,可通过--journal参数手动启用。WiredTiger存储引擎使用128KB内存缓冲区,异常关机时可能丢失最多128KB的数据。视频讲解和详细步骤参见附录。
327 17
|
前端开发
如何选择网站模版?网站模版建站优势。
本文介绍了为什么越来越多用户选择使用成熟的网站模版,而不是建站公司。推荐PageAdmin CMS网站模版,其界面友好、主题高质量且有品牌知名度。
230 25
|
机器学习/深度学习 数据采集 搜索推荐
使用Python实现智能食品消费偏好预测的深度学习模型
使用Python实现智能食品消费偏好预测的深度学习模型
346 23
|
存储 文字识别 安全
Javaweb之SpringBootWeb案例之阿里云OSS服务的详细解析
Javaweb之SpringBootWeb案例之阿里云OSS服务的详细解析
352 0