青少年python系列 45.文件操作1

news2025/7/18 5:47:27

青少年python系列目录_老程序员115的博客-CSDN博客

青少年python教学视频ppt源码

 在计算机信息时代,我们知道文本文件可存储的数据量多得难以置信,例如气象站的天气数据、交管部门的交通数据、金融商业街的社会经济数据、电子图书馆或博物馆的文学作品等等。每当需要分析或修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其如此。

        例如,我们可以编写一个这样的程序:读取一个文本文件的内容,重新设置这些数据的格式并将其写入文件,让浏览器能够显示这些内容。要使用文本文件中的信息,首先需要将信息读取到内存中。为此,我们可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。

        在此次课程中,我们将学习如何处理文件,可以让程序能够快速地分析大量的数据。

1 全文读取文件

        要读取文件数据,需要有一个包含几行数据信息的文本文件。下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,并且在小数点后每10位处都换行。

        我们将文件的名称与格式保存为pi.txt,然后将该文件保存到与我们此时运行的Python文件的同一个目录中。

        我们先来看看函数open()。要以任何方式使用文件——哪怕仅仅是打印其内容,都得先打开文件,这样才能访问它。

        函数open()接受一个参数:要打开的文件的名称。Python在当前执行的文件所在的目录中查找指定的文件。

        在这个示例中,当前运行的是全文读取文件.py,因此Python在全文读取文件.py所在的目录中查找pi.txt文件。函数open()返回一个表示文件的对象。这里,open('pi.txt')会返回一个表示文件pi.txt的对象。Python将这个对象存储在我们将在后面使用的变量中。

        关键字with在不再需要访问文件后会将其关闭。在这个程序中,注意到我们调用了open(),但没有调用close()。当然,你也可以调用open()和close()来打开和关闭文件,但这样做时,如果程序存在bug,导致close()语句未执行,文件将不会关闭。这看似微不足道,但未妥善地关闭文件可能会导致数据丢失或受损。如果在程序中过早地调用close(),你会发现需要使用文件时它已关闭(无法访问),这可能会导致更多的错误。

        并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用前面所示的结构,可让Python去确定:你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。有了表示pi.txt的文件对象后,我们在程序的第三行使用read()函数方法读取这个文件的全部内容,并将读取到的信息作为一个长长的字符串存储在变量contents中。这样,通过打印contents的值,就可将这个文本文件的全部内容显示出来。

2 文件读取路径

        当将类似pi.txt这样的简单文件名传递给函open()时,Python将在当前执行的文件(即.py程序文件)所在的目录中查找文件。但是有时可能要打开不在运行程序文件所属目录中的文件。例如,可能将程序文件存储在了计算机桌面的一个文件夹中,要让Python打开不与程序文件位于同一个目录中的文件,我们需要提供要打开的文件路径,它让Python到系统特定位置去查找。

1、相对路径文件查找

        通常,程序运行文件是与数据文件分开存放的,假如我们在程序需运行文件目录下新建一个data文件夹,然后我们将pi.txt放入其中,这时我们该如何通过程序来访问打开pi.txt文件呢?我们先在.py文件目录下创建data文件夹,然后把pi.txt放入其中。

        这行代码让Python在当前运行的.py程序文件目录下的data文件夹中,寻找.txt文件。请注意,在文件路径中使用反斜杠(\)而不是斜杠(/)。

相对路径查找操作执行的文件,其实就是相对于当前运行.py程序文件的磁盘路径位置。

2、绝对路径文件查找

        我们还可以将文件在计算机中的准确位置告诉Python,这样就不用关心当前运行的.py程序文件存储在什么地方了。这称为绝对文件路径。在相对路径行不通时,可试着使用绝对路径。

        运行程序后,我们看到此种方法,可以完成对绝对路径下的文件进行访问、操作,而且路径中也可以包含中文字符,要知道很多情况下是不支持使用中文地址的。

        相对、绝对路径寻址的方式就像真实世界的地址,比如通过绝对路径寻址就像告诉系统:我是来自哪个省份、地级市、县(区)的一样,而相对路径寻址就像你已经有了地址作为参照,即以.py运行程序文件的地址作为参照地址,来告诉系统:我是同某某已知的.py运行程序文件是一个县的。

3 逐行读取文件

        读取文件时,常常需要检查其中的每一行:你可能要在文件中查找特定的信息,或者要以某种方式来修改文件中的文本内容。

        我们将要读取的文件的名称存储在变量file_path中,这是使用文件地址时一种常见的做法。由于变量file_path表示的并非实际文件,它只是一个让Python知道到哪里去查找文件的路径字符串,因此可轻松地将'pi.txt'替换为你要使用的另一个文件的名称。

        调用open()后,将一个表示文件及其内容的对象存储到了变量file_object中。这里也使用了关键字with,让Python负责妥善地打开和关闭文件。为查看文件的内容,我们通过对文件对象执行for循环来查看文件中的每一行。

我们也可以对中文文本信息进行读取:

        在进行中文文本信息读取的过程中,需要读取的目标文本文档的编码方式必须是UTF-8的格式,并在open()函数方法中指定编码方式encoding='utf8'。进行英文文本信息读取的过程中,需要读取的目标文本文档的编码方式必须是ANSI的格式,可不必指定编码方式。那什么是编码方式呢?下面我们来简单了解一下txt文本的四种编码方式:

        ANSI:系统预设的标准文字储存格式。ANSI是American National Standards Institute的缩写。它成立于1918年,是一个自愿性的组织,拥有超过1300个会员,包括所有大型的电脑公司。ANSI专为电脑工业建立标准,它是世界上相当重要的标准。

        Unicode:世界上所有主要指令文件的联集,包括商业和个人电脑所使用的公用字集。当采用Unicode格式储存文件时,可使用Unicode控制字符辅助说明语言的文字覆盖范围,如阿拉伯语、希伯来语。用户在记事本中输入含有Unicode字符的文字并储存文件时,系统会提示你必须选取“另存为”中的Unicode编码,这些字符才不会被遗失。部分Windows 2000字型无法显示所有的Unicode字符。如果发现文件中缺少了某些字符,只需将其变更为其它字型即可。

        Unicode big endian:在Big-endian处理器(如苹果Macintosh电脑)上建立的Unicode文件中的文字位元组(存放单位)排列顺序,与在Intel处理器上建立的文件的文字位元组排列顺序相反。最重要的位元组拥有最低的地址,且会先储存文字中较大的一端。为使这类电脑的用户能够存取你的文件,可选择Unicode big-endian格式。

UTF-8:UTF意为通用字集转换格式(Universal Character Set Transformation Format),UTF-8是Unicode的8位元格式。如果使用只能在同类位元组内支持8个位元的重要资料一类的旧式传输媒体,可以选择UTF-8格式。

总结

1、全文读取文件

with open('pi.txt') as file_object:

    contents = file_object.read()

    print(contents)

2、文件读取路径

相对路径读取与绝对路径读取

3、逐行读取文件

file_path = 'C:\全文读取文件\data\pi.txt'                   

with open(file_path) as file_object:

 for every_line in file_object:

        print(every_line)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做斗音都要经历的几个时期,你目前处于哪个阶段呢?

大家好,我是我赢助手,专注于自媒体短视频去水印、去重和文案提取运营。 今天给大家分享下做斗音的几个时期 1、兴奋期 听别人说斗音遍地是黄金开始到处学艺买资料准备大干一场。 这时是最关键的,能学到可以实操的项目才是最重要的&#x…

施耐德PLC TM218如何实现远程上传下载程序?

施耐德TM218支持IEC61131-3标准的六种编程语言,具备模块化、结构紧凑、功能全面等特点,在工业控制领域应用广泛,是市场上常见的产品之一,性价比较高。 因此,对于采购施耐德PLC的企业来说,通过PLC程序的上下…

【18-业务开发-基础业务-商品模块-分类管理-前后端管理系统的启动-为分类管理表增加数据-Json插件的下载-返回具有层级目录、父子关系结构的数据】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了,请点击这里!】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

内网渗透神器CobaltStrike之DNS Beacon(四)

DNS隧道简介 利用DNS隧道进行攻击的现象已存在多年,将数据封装在DNS协议中传输,大部分防火墙和入侵检测设备很少会过滤DNS流量,僵尸网络和入侵攻击可几乎无限制地加以利用,实现诸如远控、文件传输等操作 DNS隐蔽隧道建立通讯并盗…

matplotlib教程二

文章目录一. 条形图1.1 简介1.2 垂直条形图1.3 水平条形图二. 直方图2.1 简介2.2 API2.3 直方图绘制三. 饼图3.1 简介3.2 API3.3 饼图绘制四. 散点图4.1 简介4.2 API4.3 散点图绘制五. 箱形图5.1 简介5.2 API5.3 绘制箱状图六. 轮廓图6.1 简介6.2 轮廓图绘制七. 图像内的文字、…

Android Studio实现一个点餐系统

点餐系统作业要求效果登录注册欢迎页用户管理菜品种类管理菜品管理订单查询点餐源码导读手把手编写注册、用户管理板块新建实体类User新建User服务新建注册活动用户管理作业要求 功能: 1.数据管理 菜品类别:凉菜;热菜;…

投资组合优化的人工蜂群算法(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

力扣(LeetCode)1732. 找到最高海拔(C++)

前缀和 这道题,很容易看出,gaingaingain (海拔高度差) 是海拔高度的一个差分,对 gaingaingain 用前缀和,就能求出每个点的海拔了。题目要求我们,找最高海拔,那么只需要维护一个变量 ansansans &#xff0c…

【NLP】使用 BERT 和 PyTorch Lightning 进行多标签文本分类

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

【论文精读5】MVSNet系列论文详解-Point-MVSNet

Point-MVSNet全文名称:Point-Based Multi-View Stereo Network,是2019提出的使用coarse-to-fine方法来优化深度图推断过程的网络结构,与上一篇CVP-MVSNet都是迭代优化的思想,不同的是Point-MVSNet在点云上进行操作,而C…

基于51单片机的二氧化碳(CO2)气体浓度监测报警系统

基于51单片机的二氧化碳(CO2)气体浓度监测报警系统( proteus仿真程序演示视频) 仿真图proteus 8.9 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:C0073 这里写目录标题基于51单片机的二氧化碳&am…

【数据结构】栈和队列的实现

文章目录一、栈的实现二、队列的实现一、栈的实现 栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素的操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈低。栈遵循数据后进先出的原则。 创建一个栈: typedef …

就是一整个爱住,你们大胆飞,我就是最坚强的后盾——Java面试突击宝典

前言 马老师说过,员工的离职原因很多,只有两点最真实: 钱,没给到位 心,受委屈了 当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真的要跳槽,想要拿…

75.【JavaWeb-03】

JavaWeb(十五)、JavaBean(十六)、MVC三层框架1.早些年:2.三层架构:(十七)、Filter(过滤器)1加入依赖2.基本步骤3.出现500错误的话4.案列演示(十八)、Listener(监听器)1.利用监听实现在线人数的统计(十九)、小结对18之前的(二十)、过滤器、监听器常见应用1.过滤器注册和注销操作…

一起Talk Android吧(第四百一十八回:制作时钟)

文章目录整体思路准备画布绘制表盘绘制刻度绘制指针示例代码各位看官们大家好,上一回中咱们说的例子是"解决Glide不能加载网络图片的方法",这一回咱们介绍的例子是"制作时钟"。闲话休提,言归正转,让我们一起Talk Android…

向毕业妥协系列之深度学习笔记:神经网络深度学习(一)

目录 一.神经网络杂记 二.计算图(反向传播求导几个实例) 1.普通式子反向传播求导 2.逻辑回归中的梯度下降 3.m个样本的梯度下降 三.向量化 深度学习系列的文章也可以结合下面的笔记来看: 深度学习笔记-目录 一.神经网络杂记 这个系列…

不知道word压缩文件怎么弄?简单三步轻松实现

如果你是学生,那么你的作业、论文应该都是以word文档格式上交的吧? 如果你是打工人,应该也经常需要编辑一些文档,例如通知、工作安排等等,给上司或其他同事查阅。 那么久而久之积累下来,word文件就会占据电…

TIA博途_通过PEEK指令在TP900触摸屏上实现监控所有IO地址的具体方法示例

TIA博途_通过PEEK指令在TP900触摸屏上实现监控所有IO地址的具体方法示例 如下图所示,首先,新建一个项目,添加一个DB块,这里以DB276为例进行说明,在该DB块中添加如图所示变量, 如下图所示,添加一个FB,用于读取IO点的值,具体程序可参考下图, 如下图所示,在OB1中调…

使用马尔可夫链构建文本生成器

本文中将介绍一个流行的机器学习项目——文本生成器,你将了解如何构建文本生成器,并了解如何实现马尔可夫链以实现更快的预测模型。 文本生成器简介 文本生成在各个行业都很受欢迎,特别是在移动、应用和数据科学领域。甚至新闻界也使用文本生…

PyTorch中的matmul函数详解

PyTorch中的两个张量的乘法可以分为两种: 两个张量对应的元素相乘(element-wise),在PyTorch中可以通过torch.mul函数(或者∗*∗运算符)实现 两个张量矩阵相乘(Matrix product)&…