Python基础(十六):文件读写,靠这一篇就够了!
文件读写的流程
类比windows中手动操作txt文档,说明python中如何操作txt文件?
什么是文件的内存对象(文件句柄)?
演示怎么读取文件
- ① 演示如下
f = open(r"D:\python_project\mxxl\test.txt", "r", encoding="utf-8")
data = f.read()
print(data[:245])
f.close()
结果如下:
- ② 一个很奇怪的现象?
f = open(r"D:\python_project\mxxl\test.txt", "r", encoding="utf-8")
data = f.read()
data1 = f.read()
print(data[:245])
print("-------------------------------------")
print(data1[:245])
f.close()
结果如下:
问题:
我们读取了2遍内容,为什么只显示了一次读取的结果呢?对于上述问题,我们用一张图回答上述问题。
演示怎么写文件
f = open(r"D:\python_project\mxxl\test2.txt","w",encoding="utf-8")
f.write("我爱北京天安门")
f.close()
假如我们在写一句天安门上太阳升
,会出现啥情况呢?
f = open(r"D:\python_project\mxxl\test2.txt","w",encoding="utf-8")
f.write("天安门上太阳升")
f.write("很好,很好")
f.close()
意外发生:
当我们再次写入新的内容的时候,发现之前写的内容不见了,这是为啥呢?这就是我们下面要讲述的文件读写的几种常见模式。
文件读写的几种常见模式(你不清楚的知识点)
关于r+、w+、a+使用说明(易错点)
r+模式:可读可写
对于这种模式,不管是读取文件中的内容,还是朝文件中写入内容。前提条件:文件存在。
# 只读取文件中的内容
f = open(r"D:\python_project\mxxl\test\test.txt", "r+", encoding="utf-8")
data = f.read()
print(data)
f.close()
# 朝文件中写入内容后,立即读取,会出现啥问题?
f = open(r"D:\python_project\mxxl\test\test.txt", "r+", encoding="utf-8")
f.write("黑姑娘")
data = f.read()
print(data)
f.close()
# 朝文件中写入内容后,调整句柄位置后,再读取,会出现啥问题?
f = open(r"D:\python_project\mxxl\test\test.txt", "r+", encoding="utf-8")
f.write("黑姑娘")
f.seek(0)
data = f.read()
print(data)
f.close()
结果如下:
w+:可读可写
# 直接往文件中写入内容
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
f.write("bbbbbb")
f.close()
# 直接读取上述文件,看看会发生啥问题?(特别注意这一步)
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
data = f.read()
print(data)
f.close()
# 朝文件中写入内容后,立即读取,又会发生什么?
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
f.write("哈哈哈哈哈")
data = f.read()
print(data)
f.close()
# 朝文件中写入内容后,调整句柄位置后,再读取,会发生什么?
f = open(r"D:\python_project\mxxl\test\test.txt", "w+", encoding="utf-8")
f.write("嘿嘿嘿嘿嘿")
f.seek(0)
data = f.read()
print(data)
f.close()
结果如下:
a+:可读可写
# 直接朝文件中写入内容
f = open(r"D:\python_project\mxxl\test\test.txt", "a+", encoding="utf-8")
f.write("哈哈")
f.close()
# 直接读取文件中的内容
f = open(r"D:\python_project\mxxl\test\test.txt", "a+", encoding="utf-8")
data = f.read()
print(data)
f.close()
# 调整句柄位置后,再读取文件中的内容
f = open(r"D:\python_project\mxxl\test\test.txt", "a+", encoding="utf-8")
f.seek(0)
data = f.read()
print(data)
f.close()
结果如下:
read、readline、readlines的区别
read()方法的使用说明
f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
data = f.read()
print(type(data))
print(data)
f.close()
结果如下:
readline()方法的使用说明
f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
data = f.readline()
print(type(data))
print(data)
f.close()
f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
for i in range(3):
data = f.readline()
print(data)
f.close()
结果如下:
去掉每一行末尾的换行符:
f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
for i in range(3):
data = f.readline().strip()
print(data)
f.close()
结果如下:
readlines()方法的使用说明
f = open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8")
data = f.readlines()
print(type(data))
print(data)
f.close()
结果如下:
对于一个10G的大文件,怎么高效的查看文件中的内容呢?
相关说明
操作说明
f = open(r"D:\python_project\mxxl\test\test.txt","r",encoding="utf-8")
for line in f:
print(line.strip())
部分截图如下:
with语法
# with 语法 自动关闭文件 相当于帮你执行了fp.close()
with open(r'test.txt','r',encoding='utf-8') as f:
data = f.read()
print(data)
Python基础(十六):文件读写,靠这一篇就够了!的更多相关文章
- python基础知识六 文件的基本操作+菜中菜
基础知识六 文件操作 open():打开 file:文件的位置(路径) mode:操作文件模式 encoding:文件编码方式 f :文件句柄 f = open("1.t ...
- python基础操作_文件读写操作
#文件读写# r只能读不能写,且文件必须存在,w只能写不能读,a只能写不能读# w+是写读模式,清空原文件内容# r+是读写模式,没有清空原文件内容,# 只要有r,文件必须存在,只要有w,都会清空原文 ...
- Python 爬虫十六式 - 第一式:HTTP协议
HTTP:伟大而又无闻的协议 学习一时爽,一直学习一直爽! Hello,大家好啊,我是Connor,一个从无到有的技术小白.有的人一说什么是HTTP协议就犯愁,写东西的时候也没想过什么是HTTP协 ...
- Python基础知识(六)------小数据池,集合,深浅拷贝
Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : 一个文 ...
- Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery
PyQuery:一个类似jquery的python库 学习一时爽,一直学习一直爽 Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 BeautifulSoup 美味 ...
- Python 爬虫十六式 - 第七式:正则的艺术
RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽 Hello,大家好,我是 Connor,一个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一位 ...
- Python 爬虫十六式 - 第五式:BeautifulSoup-美味的汤
BeautifulSoup 美味的汤 学习一时爽,一直学习一直爽! Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 Xpath 的使用方法.Xpath 我觉得还是 ...
- Bootstrap<基础十六> 导航元素
Bootstrap 提供的用于定义导航元素的一些选项.它们使用相同的标记和基类 .nav.Bootstrap 也提供了一个用于共享标记和状态的帮助器类.改变修饰的 class,可以在不同的样式间进行切 ...
- Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)
Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: 将一些东西封装到一个地方,你还可以取出来( ...
- Python爬虫十六式 - 第四式: 使用Xpath提取网页内容
Xpath:简单易用的网页内容提取工具 学习一时爽,一直学习一直爽 ! Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 requests 的使用方法.到上节课为止, ...
随机推荐
- how to open a terminal in finder folder of macOS
how to open a terminal in finder folder of macOS shit service demo refs https://lifehacker.com/launc ...
- 人物传记STEPHEN LITAN:去中心化存储是Web3.0生态重要组成
近期,NGK.IO的开发团队首席技术官STEPHEN LITAN分享了自己对去中心化储存的观点,以下为分享内容. 目前的存储方式主要是集中式存储,随着数据规模和复杂度的迅速增加,集中存储的数据对于系统 ...
- vue最好的ssr服务器渲染框架
vue和angular js.react三大框架非常好用,现在大部分人都使用了这三大框架进行开发. 但是vue这些框架到目前位置,大部分还是用来做管理后台,用来做移动端.而官网网站却很少用他们来开发. ...
- 为什么ElasticSearch比MySQL更适合全文索引
熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤,对这个过程不了解的同学可以先行 ...
- Docker Tips: 关于/var/run/docker.sock
本文转载自Docker Tips: 关于/var/run/docker.sock 导语 你可能已经运行过docker hub上的container并且注意到其中的一些需要绑定挂载(mount)/var ...
- 一些小Tip
导语 个人感悟,持续更新中... 正文 无论NIO还是AIO,都没有在数据传输过程(tcp/udp)作革命性的创新.他们在传输过程的效率和传统BIO是一样的,还是会产生阻塞(网络延迟,Socket缓冲 ...
- spring学习路径
1.https://zhuanlan.zhihu.com/p/72581899 spring 要点记录: (1)Web服务器的作用说穿了就是:将某个主机上的资源映射为一个URL供外界访问. (2)通过 ...
- Linux常用小命令
1:查看当前磁盘内存 df-ah/df-hl 2:查看文件和文件夹大小 du -h --max-depth=1 /目的文件夹 3:scp 拷贝命令 指定端口传输文件 scp -p port filen ...
- Java基本概念:面向对象
一.简介 面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么.第二步做什么的细节中. 面向对象的思维模式说白了就是分类思维模式.思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独 ...
- 后端程序员之路 13、使用KNN进行数字识别
尝试一些用KNN来做数字识别,测试数据来自:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burgesh ...