Python——文件

news2025/2/28 19:41:42

文件

概念

我们常见的txt,jpg,mp4等等都是文件,存储在硬盘中的内容,就是文件,而文件夹是一种特殊的文件——目录文件

路径

一层一层文件夹组成的字符串就是路径,每一个文件的路径都是唯一的,相当于身份证号,可以通过路径来找到一个文件在磁盘上的详细位置,进而就可以查看修改这个文件了

路径分为绝对路径和相对路径,绝对路径在win上以盘名开头,例如D:\qq\program\bin\qq.exe,而相对路径则是以其他文件所在的地址为开头,例如以bin为相对地址,那么qq.exe的相对路径就是.\qq.exe

打开文件

使用open()方法可以获取一个文件对象
打开方式有

  1. r 按照读的方式打开
  2. w 按照写的方式打开
  3. a 按照写的方式打开,把内容写到原有文件的末尾
f = open("路径","打开方式")
f = open("/Users/lixiao/Downloads/IMG_1637.jpg","r")

如果文件路径不对或者文件不存在,就会抛出异常

需要注意的是,文件打开操作后一定要进行关闭,否则会造成内存资源泄露

f.close()

因此,python为了防止这种情况,我们的文件打开的个数是有限的,在打开一定数量的文件后,系统将会报错。系统中也可以通过一些配置项来修改最大打开文件的个数

大家可以用下面这个代码来试试自己的电脑最多打开多少个文件

count = 0
flist = []
while True:
    f = open("/Users/lixiao/Downloads/IMG_1637.jpg", "r")
    flist.append(f)
    count += 1
    print(count)

在这里插入图片描述
如果我们没有把打开的文件放到列表中,那么事实上这个数字将会一直增大,这是因为我们的python为了防止有些程序员忘记释放文件,而有的垃圾回收机制——自动将不使用的变量释放

写文件

使用“w”方式打开文件,使用write方法进行写入

f = open("/Users/lixiao/test.txt", "w")
f.write("hello")
f.close()

在这里插入图片描述
在这里插入图片描述
而如果我们不想破坏文件中的内容,将写的内容追加到原文件的后面,就需要用到a方式打开

如果文件对象已经关闭,那么就不能对文件内容进行更改,否则会抛出异常

读文件

使用r方式打开文件,然后使用read()方法可以取出文件的内容,如果传参就代表读几个字节

f = open("/Users/lixiao/test.txt", "r")
print(f.read())
f.close()

在这里插入图片描述
由于有多个版本的编码方式,因此如果我们要读有中文的文件,那么就不能使用python默认的gdk编码,而是要用utf-8
在打开文件时,可以使用encoding来设置字符编码

f = open("/Users/lixiao/test.txt", "r", encoding='utf8')
print(f.read())
f.close()

在这里插入图片描述
可以使用for循环来读取文件中的每一行

f = open("/Users/lixiao/test.txt", "r", encoding="utf8")
print(f.read())
for line in f:
    print(line)
f.close()

在这里插入图片描述
如果我们不想要print函数的结尾自动换行,那么可以设置end参数为“”

f = open("/Users/lixiao/test.txt", "r", encoding="utf8")
print(f.read())
for line in f:
    print(line, end="")
f.close()

还可以使用readlines()来读取文件所有的内容,结果是一个列表,其元素是文件的每一行内容

f = open("/Users/lixiao/test.txt", "r", encoding="utf8")
flines = f.readlines()
print(flines)
f.close()

在这里插入图片描述
readlines相当于一次将文件内容全部读取,而for循环遍历则是一行一行的读取文件内容,因此只要不是特别大的文件,一般来说readlines要比for循环读文件更加高效

上下文管理器

上下文管理器是为了防止我们代码结构复杂而忘记关闭文件的
在java中,我们使用try(文件),可以实现文件的自动关闭

def func():
    with open("/Users/lixiao/test.txt", "r", encoding="utf8") as f:
        # 处理文件
        return

func()

当with对应的代码块执行完毕后,就会自动的执行close了

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

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

相关文章

卷积、自相关函数、功率谱密度

文章目录1、自相关函数和卷积2、自相关函数的傅里叶变换最近我在思考为什么: 为什么随机过程的自相关函数和其功率谱密度是一对傅里叶变换?1、自相关函数和卷积 这俩跟孪生兄弟似的,经常一起出现,我们先来看看自相关函数和卷积的…

【读书笔记】曾国藩的正面与侧面(二)

本书为全集的第二册,针对曾国藩的整个家族进行了介绍。包括他的兄弟,父母,和子女。 曾国藩的兄弟: 曾国潢:比曾国藩小9岁 是几个兄弟中读书天分最差的一个,但是有一个优点就是勤奋实在,所以在…

案例故事丨老虎国际 x TiDB ,降低架构复杂性,保障全球用户安全可靠投资

券商是一个古老的行业,发展至今已经历了三个时代:第一代券商为传统券商,在线下交易大厅进行买卖;第二代券商开始了电子化进程,从线下到线上进行了浅层服务的转移,改善了用户体验,提高了金融服务…

复习计算机网络——第四章习题记录

1、一台交换机具有24个100Mbps的全双工端口和2个1000Mbps的全双工端口,如果所有的端口都工作在全双工状态,那么交换机总带宽等于: 交换机知识点: (1)交换机具有24个10或者100Mbps全双工端口连接一般的用户计算机&…

python脚本系列——批量下载清华开源依赖包

一、脚本展示 1.流水线编译过程,执行apk --update add --no-cache xxx 2.报错ERROR: xxx package mentioned in index not found (try apk update) 3.内网环境缺依赖包,需要从清华源下载对应的包,但是需要根据报错一个个找&#x…

[附源码]计算机毕业设计教学辅助系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

1558_AURIX_TC275_RCU模块中的ESR管脚

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) CPU的安全状态,如果有bit为0说明SRAM等内容可能是不可靠的。 1. ESR的管脚是可以实现对外输出复位提示信息功能的。 2. ESR管脚的几种用法:作为输入触发复位、作为…

双重预防体系智能管理系统助力集团施工企业落实双重预防机制建设

安全警钟长鸣,为何事故仍不时发生?说明“安全网”织得不够密。当前我国建筑施工安全生产方面存在诸多薄弱环节和突出问题,强化安全生产主体责任落实,全面构建安全风险分级管控和隐患排查治理双重预防工作机制,坚决防范和遏制较大…

如何应对项目上线前出现Bug?

当你在测试阶段最后两天,发现测试执行情况不理想,和预估的进度相差较大时,是否会焦虑到不知所措?当你在上线前发现一个严重的问题,修复后需要重新执行一些验证测试及增加回归测试,此时你是否会惊慌&#xf…

使用nvm管理(切换)node版本

使用nvm切换node版本1. 完全删除之前的node及npm(清理干净Node: 应用程序,缓存的文件,环境变量 )2. 使用管理员身份安装nvm,下载如下3. 安装完nvm之后找到nvm下载路径对应的文件4. 使用管理员身份打开cmd,n…

β-葡聚糖偶联超顺磁纳米氧化铁颗粒|紫杉醇-二十二碳六烯酸—右旋糖酐偶联物

β-葡聚糖偶联超顺磁纳米氧化铁颗粒 中文名称:β-葡聚糖偶联超顺磁纳米氧化铁颗粒 纯度:95% 存储条件:-20C,避光,避湿 外观:固体或粘性液体 包装:瓶装/袋装 溶解性:溶于大部分有机溶剂&am…

Jenkins集成appium自动化测试(Windows篇)

目录:导读 一,引入问题 二,搭建思路 三,具体步骤 1,搭建Jenkins 2,新建节点 3,配置节点 4,启动代理 5,新建任务 6,配置任务 7,调试 四…

谁说菜鸟不会数据分析 | 学习笔记

一.前言 数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程 数据分析的目的是把隐藏在一大批看似杂乱无章的数据背后的信息集中和提炼出来,总结出所研究对象的内在规律。在实际工作中,数据分析能够帮助管理者进行判断和决策&…

WebDAV之葫芦儿•派盘+麻雀记

麻雀记 支持WebDAV方式连接葫芦儿派盘。 想要一款非常小巧的笔记软件?占用设备内存小,功能非常丰富。比如写便签、清单、图片、倒数日、名片、纪念日、心情、绘图、地址、等等,并且你还可以使用看板、标签以及四象限等功能来帮助你更好地将所写内容归纳整理,快来体验下麻…

不删除分区的情况下怎么合并分区?如何合并磁盘分区

不删除分区的情况下怎么合并分区??本文将向您展示使用 Diskpart 命令和分区管理工具合并磁盘分区的可靠解决方案。请继续阅读,以获得合并磁盘分区的相关信息。 一、合并磁盘分区 也许你的磁盘上,有一个空间很大的分区&#xff0c…

ctfshow 大吉大利杯

veryphp 看着思路很简单&#xff0c;就是利用post传参和extract函数来给需要的参数赋值&#xff0c;再利用call_user_func调用qwq中的oao静态方法。 感觉最麻烦的就是 preg_match(/^\-[a-e][^a-zA-Z0-8]<b>(.*)>{4}\D*?(abc.*?)p(hp)*\R(s|r).$/, $shaw_root)这个…

JavaScript进阶教程——包装对象、类型转换、作用域、闭包与模块化

文章目录包装对象类型转换显示转换隐式转换作用域let与const的用法&#xff1a;作用域链闭包与模块化封装包装对象 为什么原始类型可以使用方法和属性&#xff1a; toString()split()length属性 包装对象&#xff1a; new String()new Number()new Boolean() let num 123;…

Linux内存管理之UMA模型和NUMA模型

共享存储型多处理机有两种模型 均匀存储器存取&#xff08;Uniform-Memory-Access&#xff0c;简称UMA&#xff09;模型 (一致存储器访问结构) 非均匀存储器存取&#xff08;Nonuniform-Memory-Access&#xff0c;简称NUMA&#xff09;模型 (非一致存…

大学生阅读小说网页设计模板代码 柏书旧书网带登录表单 注册表单小说书籍网页作业成品 学校书籍网页制作模板 学生简单书籍阅读网站设计成品

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

python Graphillion简介

Graphillion是一个用于高效图集操作的Python库。与NetworkX等现有的图形工具不同&#xff0c;Graphillion被设计为一次只处理一个图形&#xff0c;而Graphillion则非常有效地处理一个大型的图形集。令人惊讶的是&#xff0c;使用Graphillion可以在一台计算机上处理数万亿的图形…