Python小炼(2):文件操作

news2024/11/15 21:50:05

 "一封信,写下太多如果"


        如果有一定语言基础的,一定对文件操作十分得"熟悉"!当然,这种熟悉是 引起人恼怒的  也不为过。 python 也有自己的文件操作,那它跟C\C++又有何不同呢?

一、文件的基本操作

(1)打开或关闭 

内建函数open, 能够打开一个指定路径下的文件, 返回一个文件对象.

open最常用的有两个参数, 第一个参数是文件名(绝对路径或者相对路径), 第二个是打开方式, 'r'/'w'/'a'/'b',表示读(默认) /写/追加写/二进制.

注:关于内建函数

我们反复遇到了 "内建函数" 这个词. 内建函数其实是包含在 __builtins__ 这个模块中的一些函数.
而 __builtins__ 这个模块Python解释器会自动包含
 

注:关于文件对象

我们学习C语言知道 FILE* , 通过 FILE* 进行文件读写操作 ,我们学习Linux时又知道, FILE* 结构中其实包含了文件描述符, 操作系统是通过文件描述符来对文件操作的。

Python的文件对象, 其实也包含了文件描述符, 同时也包含了这个文件的一些其他属性. 本质上也是通过文件描述符完成对文件的读写操作。

#文件操作
f = open('./test.txt', 'w') #打开文件
f.close() #关闭文件

(2)读文件

读文件的前提是,该文件被打开之前已经存在。

 read: 读指定长度字节数的数据, 返回一个字符串。

 readline: 读取一行数据, 返回一个字符串。

 readlines: 读取整个文件, 返回一个列表. 列表中的每一项是一个字符串, 代表了一行的内容。

该文件已经存在; 

我们分别用上面的三个read进行读取;

除开用readlines读取,也可以直接进行循环读取(但这样效率上比 readines 更慢);

(3)写文件 

write: 向文件中写一段字符串.
如需写文件, 必须要按照 'w' 或者 'a' 的方式打开文件. 否则会写失败

writelines: 参数是一个列表, 列表中的每一个元素是一个字符串
并没有一个 writeline 这样的函数. 因为这个动作等价于 write 时在字符串后面加上 '\n'. 同理, 使用writelines的时候, 也需要保证每一个元素的末尾, 都带有 '\n‘’。

write: 

writelines; 

(4)关于读写缓冲区 

我们知道, C语言库函数中的fread, fwrite和系统调用read, write相比, 功能是类似的. 但是
fread/fwrite是带有缓冲区的(这是语言级别的缓冲区)。

Python的文件读写操作, 既可以支持带缓冲区, 也可以选择不带缓冲区。

(5)文件对象

文件具备随机访问能力. 这个过程是通过操作文件指针完成的
 

seek: 将文件指针移动到从文件开头算起的第几个字节上. 有两个参数. 第一个参数offset表示偏移的字节数. 第二个参数whence表示偏移量的起始位置在哪. 值为0, 表示从开头计算, 值为1:表示从当前位置.值为2: 表示从文件结尾位置.


tell: 获取当前文件指针指向的位置. 返回当前位置到文件开头的偏移量

(6)上下文管理器

如果打开了文件  不选择关闭 会发生什么?

我想从聪明的你一定知道。 系统的文件资源描述符越来越少。 直到最后 抛异常 告诉你没有更多的文件描述符了。

可能你会说,“我很严谨! 打开文件后 我一定 会吗写一个close”!  然而事实上,很多情况不单单是我们 忘记close。 而是遇到整个代码里 如果有异常的地方,那么 代码可能就不会跑到close处。

从而导致 文件资源泄漏。 C++中为解决这个问题, 特地引入了智能指针来 用来管理这些资源。

那么python是如何解决的呢?

ith open('out') as f:
print(''.join(f.readlines())) 

        在with语句块内进行文件操作. 当文件操作完毕之后, 出了with语句之外. 就会自动执行f的关闭操作.一个支持上下文协议的对象才能被应用于with语句中. 我们将这种对象称为上下文管理器.

        Python中很多内置对象都是上下文管理器, 例如文件对象, 线程锁对象等


二、文件系统的基础操作 

(1)文件路径的操作 

os.path这个模块中, 包含了一些实用的路径操作的函数 

(2)常见的文件系统操作

os模块中包含了很多对文件/目录的基础操作, 参见下表


总结:

①open('文件名','w/r/a',encoding = 'xxx') close()

②read\readline\readlines\  write\writelines

③os.path 查找系统路径模块的一些 函数还是比较重要。 exist

本篇到此结束了

感谢您的阅读

祝你好运~

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

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

相关文章

中国宗教活动场所数据库(数据+python代码)

通常研究,宗教活动场所与公司避税行为,社会整体信任水平以及民营企业创始资金来源等元素相关联。例如,企业注册地的宗教传统负向影响公司避税,企业注册地的宗教传统通过提高管理者的道德意识和强化管理者的风险规避倾向两条机制抑…

Swagger总结

目录 简介: openAPI Springfox: 简介 Springfox的使用 SwaggerUI的使用 Swagger配置 设置扫描的包 设置范围 Swagger常用注解: 控制类、方法生成接口信息 ApiParam ApiModel ApiModelProperty ApiIgnore ApiImplicitParam 部分图片来自百…

SpringBoot日志详解

⭐️前言⭐️ 🍉博客主页: 🍁【如风暖阳】🍁 🍉精品Java专栏【JavaEE进阶】、【JavaEE初阶】、【MySQL】、【数据结构】 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 …

rocketMq相关机制

rocketMq相关机制 topic读写队列 perm字段表示Topic的权限。有三个可选项。 2:禁写禁订阅,4:可订 阅,不能写,6:可写可订阅 这其中,写队列会真实的创建对应的存储文件,负责消息写入。…

小蓝本 第一本《因式分解技巧》第四章 拆项与添项 笔记(第四天)

小蓝本 第一本《因式分解技巧》第四章 拆项与添项 笔记(第四天)前言拆项与添项目的方法分组分解走平均分配分组分解走瞄准公式旧事重提第二章公式(9)好题习题4题目题解错题题号改错经验前言 芜湖,坚持做小蓝本的第四天,今天的知识…

基于LSTM、BP神经网络实现电力系统负荷预测(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

房屋装修设计技巧有哪些?有哪些注意事项

拥有自己的家是每个人的愿望,拥有一座新的房子是一种幸福。但是,作为一个装修小白,装修新房是一件很麻烦的事情。那么,房屋装修设计技巧是什么?房屋的装修设计应该注意些什么?下面我将详细解释一下。 房屋装…

pandas数据分析

目录 题目001: 把list变成一个Series 题目002: 把dict变成一个Series 题目003: 把Series转换成list 题目004: 把series变成一个DataFrame 题目005:用numpy创建Series 题目006:转换series的数据类型 …

【亲测可用】2022最新酒桌小游戏喝酒小程序源码_带流量主

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 喝酒神器3.6,原版本没有广告位,修改增加了广告位, 由多个喝酒小游戏组合而成,具体如下: 大话骰(带音效) 愤怒大叔(带音效,多个皮肤模板用户可选择) …

【大数据入门核心技术-ElasticSearch】(二)ElasticSearch整体架构和重要工作原理

目录 一、整体架构图 二、重要工作原理 1、文档写入原理 2、文档检索原理 一、整体架构 二、重要工作原理 1、文档写入原理 1)选择任意一个DataNode发送请求,例如:node2。此时,node2就成为一个coordinating node(…

我也和 chatGPT 聊了聊

我也和 chatGPT 聊了聊,都是因为最近 chatGPT 太火了! 这是一个大型的 AI 语言模型。你不仅可以和它聊天,问它各种各样的问题,还可以让它写代码、写论文、解数学题、解bug,等等。 可以说,chatGPT 是目前最…

软件安全测试-Web安全测试详解-CSRF攻击

1. 什么是CSRF攻击? CSRF(Cross Site Request Forgery),中文是跨站点请求伪造。CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页…

基于java+springmvc+mybatis+jsp+mysql的洗衣店管理系统

项目介绍 洗衣店管理系统是信息时代的产物,它是洗衣店管理的一个好帮手。有了它不再需要繁重的纸质登记,有了它洗衣店管理员不在需要繁重的工作,一些收费标准和干洗业务等基本信息可以由管理人员及时的对信息进行查询、更新、修改和删除&…

【自然语言处理】【ChatGPT系列】大模型的涌现能力

大语言模型的涌现能力《Emergent Abilities of Large Language Models》论文地址:https://arxiv.org/pdf/2206.07682.pdf 相关博客 【自然语言处理】【ChatGPT系列】大模型的涌现能力 【自然语言处理】【文本生成】CRINEG Loss:学习什么语言不建模 【自然…

web前端期末大作业——餐品后台管理系统(html+css+javascript)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨

背景问题 再讲 binlog 之前,我们先来回顾下主流关系型数据库的默认隔离级别,是默认隔离级别,不是事务有哪几种隔离级别,别会错题意了 1、Oracle、SQL Server 的默认隔离级别是什么,MySQL 的呢 ? 2、为什…

基于C#+SQL Server2008 开发三层架构(WinForm)图书管理系统【100010014】

图书管理系统 一、项目背景及意义 当今由于信息技术的飞速发展,图书馆作为社会知识信息媒介的功能日益重要,网络环境下的信息资源建设知识仓库的设计,开放存取学术交流模式,知识管理系统,智能检索,数字参…

SDE论文阅读

论文链接:Score-Based Generative Modeling through Stochastic Differential Equations 文章目录摘要引文背景基于郎之动力学的去噪分数匹配/SMLD去噪扩散概率模型/DDPMSDEs的基于分数的生成模型SDEs下的受扰动数据逆转SDE生成样本估计SDE的分数例子:VE…

spring——Spring自动装配——示例

1. 不使用自动装配(autowire"no") autowire"no" 表示不使用自动装配&#xff0c;此时我们必须通过 <bean> 元素的 <constructor-arg>和 <property> 元素的 ref 属性维护 Bean 的依赖关系。 2. 按名称自动装配(autowire"byName"…

【Qt入门第38篇】 网络(八)TCP(二)

导语 在上一节里我们使用TCP服务器发送一个字符串&#xff0c;然后在TCP客户端进行接收。在这一节将重新写一个客户端程序和一个服务器程序&#xff0c;这次实现客户端进行文件的发送&#xff0c;服务器进行文件的接收。有了上一节的基础&#xff0c;这一节的内容就很好理解了…