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 的使用方法.到上节课为止, ...
随机推荐
- taro css 转换 bug
taro css 转换 bug https://nervjs.github.io/taro/docs/size.html https://nervjs.github.io/taro/docs/comp ...
- css & clip-path
css & clip-path https://developer.mozilla.org/en-US/docs/Web/CSS/clip-path https://tongqu.me/ tw ...
- NGK项目是一个怎样的项目?区块链里算是有前景的吗?
牛市时,项目被众星捧月,优点被无限放大,缺点无限被掩盖:而当市场开始下行时,之前的赞美则变成了贬低.所以了解项目不能盲目跟风,需要有独立的思考.对于近期引起社区讨论的NGK项目,以它为例,今天就来给大 ...
- Github Packages和Github Actions实践之CI/CD
概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新.近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌. G ...
- WPF 数据绑定实例一
前言: 数据绑定的基本步骤: (1)先声明一个类及其属性 (2)初始化类赋值 (3)在C#代码中把控件DataContext=对象: (4)在界面设计里,控件给要绑定的属性{Binding 绑定类的属 ...
- Linux没有ens33解决方案
一.前言 运行环境:window10+VMware14+Centos7 博主最近遇到一个比较郁闷的问题,在虚拟机上操作Linux系统查看IP的时候,发现没有ens33或者eth0了,试了很多办法都没有 ...
- python中yield的用法详解——最简单,最清晰的解释
转载自https://blog.csdn.net/mieleizhi0522 首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都 ...
- 痞子衡嵌入式:盘点国内RISC-V内核MCU厂商(2020年发布产品)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内RISC-V内核MCU厂商(2020). 虽然RISC-V风潮已经吹了好几年,但2019年才是其真正进入主流市场的元年,最近国内大量 ...
- Java RPC 框架 Solon 1.3.9 发布,更便利的支持
Solon 是一个微型的Java RPC开发框架.项目从2018年启动以来,参考过大量前人作品:历时两年,4000多次的commit:内核保持0.1m的身材,超高的跑分,良好的使用体验.支持:RPC. ...
- [MIT 18.06 线性代数]Intordution to Vectors向量初体验
目录 1.1. Vectors and Linear Combinations向量和线性组合 REVIEW OF THE KEY IDEAS 1.2 Lengths and Dot Products向 ...