当前位置: 首页 > news >正文

5-python文件操作

文章目录

  • 1.打开文件
  • 2.文件读取
  • 3.文件关闭
  • 4.文件写入/追加

1.打开文件

当传参顺序不一致时,不能使用位置传参,应使用关键字传参
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

通常使用:
open(file=“”,mode=“”,encoding=“”)
(1)file:(所在路径)文件名
(2)mode:打开文件的模式
①只读r:默认模式,可省略
②写入w:若原文件存在,会删除原文件的内容,重新开始编辑;如果文件不存在,会创建新文件
③追加a:原文件内容不会被删除,可以在后面写入新的内容;如果文件不存在,会创建新文件
(3)encoding:编码格式
默认为UTF-8,某些情况下可省略,但建议注明。常见的编码有UTF-8、GBK、Big5

2.文件读取

(1)read(num)方法:从文件中读取指定字节num的数据,如果num为空默认全部读入

例如:在D盘有一个hello.txt的文件

在这里插入图片描述

打开并读取
如果多次使用read(num),会从上次读取结束的位置继续往后读取num个字节,如果上次已经读到底,再调用read将读不到任何数据

f=open(file="D:/hello.txt",mode="r",encoding="UTF-8")
print(f.read())

在这里插入图片描述

(2)readlines()按照行的方式把整个文件中的内容进行一次性读取,返回一个列表,其中每一行的数据为一个元素

在这里插入图片描述

f=open(file="D:/hello.txt",mode="r",encoding="UTF-8")
print(f.readlines())

在这里插入图片描述

(3)readline()方法:调用一次只会读取到一行
在这里插入图片描述

f=open(file="D:/hello.txt",mode="r",encoding="UTF-8")
print(f.readline())
print(f.readline())
print(f.readline())

在这里插入图片描述

(4)使用for循环读取

在这里插入图片描述
每次调用都会读取一行的内容

f=open(file="D:/hello.txt",mode="r",encoding="UTF-8")
for x in f:print(x)

在这里插入图片描述

3.文件关闭

使用结束后使用close关闭文件对象,结束对文件的占用
如果不使用close,文件会在程序结束运行时关闭
文件未关闭时,相当于文件已打开,不能在计算机上对文件进行删除、重命名等操作

f=open(file="D:/hello.txt",mode="r",encoding="UTF-8")
f.close()
print(f.read()) # ValueError: I/O operation on closed file.

操作完成后自动关闭文件 with open,不再需要close操作

with open(file="D:/hello.txt",mode="r",encoding="UTF-8") as f:print(f.read()) # 输出见下图
print(f.read()) # ValueError: I/O operation on closed file.

在这里插入图片描述

[练习] 统计D:/practice.txt(下图)中单词"and"出现的次数

在这里插入图片描述
[解]
法一:使用read读取,count计数

f=open("D:/practice.txt","r")
print(f.read().count("and")) 
f.close()

输出:11
此方法统计的是文中出现"and”的次数,而非"and”单词的数量

在这里插入图片描述

法二:使用for循环读取
此方法能准确统计到"and”单词出现的次数

count=0 # 记录单词"and"出现的次数
f=open("D:/practice.txt","r")
for x in f: # 每次读取一行x=x.strip() # 去除开头和结尾的空格和换行符words=x.split(" ") # 以空格切割字符串,形成一个个单词存入wordsfor y in words:if y=="and":count+=1
print(count)

输出:10

4.文件写入/追加

f.write(“写入内容”):写入内存缓冲区
f.flush():真正写入文件(追加需要,写入不需要)

在这里插入图片描述
(1)追加

f=open("D:/hello.txt","a") # 追加打开,不可读
f.write("nihao")
f.flush() # 必须有
f.close()

在这里插入图片描述
追加打开不可读,需要重新只读读打开

f=open("D:/hello.txt","a") # 追加打开,不可读
f.write("nihao")
f.flush()
print(f.read()) # io.UnsupportedOperation: not readable
f=open("D:/hello.txt","a") # 追加打开,不可读
f.write("nihao")
f.flush()
f=open("D:/hello.txt","r") # 只读
print(f.read()) # hahanihao

换行追加

在这里插入图片描述

f=open("D:/newfile.txt","a")
f.write("\nhello")
f.close()

在这里插入图片描述

(2)写入
写入可以不使用flush,会自动调用

D盘无文件

f=open("D:/newfile.txt","w") # 创建新文件newfile.txt
f.write("newwrite")
f.close()

在这里插入图片描述
在此基础上覆盖写入

f=open("D:/newfile.txt","w")
f.write("nihao")
f.close()

在这里插入图片描述

同样,写入操作也不能读取

[练习] 将D盘下test.txt文件的内容的正式项拷贝到D盘下bill.txt的文件中

在这里插入图片描述

fold=open("D:/test.txt","r",encoding="UTF-8") # 老文件用fold标识,只读即可
fnew=open("D:/bill.txt","w",encoding="UTF-8") # 新文件用fnew标识,这里用的是写入w
for x in fold: # 遍历每一行x=x.strip()if x.split(",")[3] == "测试":  # 分割结果用列表保存,可以进行下标索引continue
# 等价于 word=x.split(",");  if word[3]...fnew.write(x+"\n")
fold.close()
fnew.close()

在这里插入图片描述

相关文章:

5-python文件操作

文章目录1.打开文件2.文件读取3.文件关闭4.文件写入/追加1.打开文件 当传参顺序不一致时,不能使用位置传参,应使用关键字传参 open(file, mode‘r’, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone) 通常使用&#xf…...

企业级Oracle入门Linux/Unix基础①

1、了解计算机系统的组成、操作系统介绍、IT技术发展与云计算、服务器的分类、存储设备介绍、常用的主机存储有哪些? 1.1 计算机系统的组成: 计算机系统由硬件和软件两部分组成。硬件包括中央处理器(CPU)、内存、输入输出设备、…...

NexNoSQL Client:Elasticsearch、Redis、MongoDB三合一的可视化客户端管理工具

背景: 工作中我们使用了Elasticsearch作为存储,来支持内容的搜索,Elasticsearch这个软件大家都耳熟能详,它是一个分布式、高扩展、高实时的搜索与数据分析引擎,不仅仅支持文本索引,还支持聚合操作&#xf…...

如果大学能重来,我绝对能吊打90%的大学生,早知道这方法就好了

最近收到很多大学生粉丝的私信,大多数粉丝们都迷茫着大学计算机该怎么学,毕业后才能找到好工作。 可能是最近回答这方面的问题有点多,昨晚还真梦回大学…其实工作了20多年,当过高管,创过业,就差没写书了。…...

FactoryBean是现在的执行时机

调用getBean方法,最终到org.springframework.beans.factory.support.DefaultListableBeanFactory#preInstantiateSingletons方法: for (String beanName : beanNames) {RootBeanDefinition bd getMergedLocalBeanDefinition(beanName);if (!bd.isAbstr…...

自定义注解使用

现象: 自定义注解使用 方法: 1:元注解 java.lang.annotation 下定义了元注解 Documented 文档相关 标注了此注解则会包含在javadoc文档中Retention 指定注解生命周期Target 指定注解作用范围Inherited 指定子类可以继承父类的注解Native …...

2023年全国最新高校辅导员精选真题及答案42

百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 89.侵犯行为是一种故意伤害他人的行为,一般包括了动机、行为和后果。 答案&a…...

Python模拟星空

文章目录前言Turtle基础1.1 Turtle画板1.2 Turtle画笔1.3 Turtle画图1.4 Turtle填色1.5 Turtle写字模拟星空模拟星球浪漫星空尾声前言 Python模拟星空,你值得拥有!uu们一周不见啦,本周博主参考网上大佬们的星空,给大家带来了属于…...

IDE集成开发工具-IDEA(一)之IDE的概念

IDE的概念 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开…...

基于Java+Springboot+vue的汽车租赁系统设计与实现【源码(完整源码请私聊)+论文+演示视频+包运行成功】

博主介绍:专注于Java技术领域和毕业项目实战 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例(200套) 目录 一、效果演示 二、…...

【笔记】关于Maven中<optional>标签的理解

之前我有个误区&#xff1a;子pom通过<parent>标签继承父pom&#xff0c;如果父pom中的依赖设置<optional>true</optional> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version&g…...

JavaScript函数及面向对象

JavaScript函数及面向对象 4.1、函数定义及变量作用域 定义方式一 绝对值函数 function abs(x){if(x>0){return x;}else{return -x;} }一旦执行到return代表函数结束&#xff0c;返回结果&#xff01; 如果没有执行return&#xff0c;函数执行完也会返回结果&#xff0c;…...

【chartGPT】我们要不要搞chartGPT?

话题:官兔子并未表态要研发chartGPT&#xff0c;chartGPT炒的很火&#xff0c;我们到底要不要投入研发呢&#xff1f; 问题起因:我个人是做技术的&#xff0c;也玩炒股。就昨天吧&#xff0c;看到一个热评【马斯克等呼吁暂停chartGPT5的研发&#xff0c;周鸿炜谈不发展才是最大…...

java——date时间类型操作

目录 1.date类型使用 2.获取想要的自定义时间点 3.date类型与String类型转换 4.date时间先后比较 1.date类型使用 在java中&#xff0c;日期时间用java.util.Date类来表示&#xff0c;调用默认构造器Date()&#xff0c;将会创建一个当前系统时间的Date对象&#xff0c;时间…...

应急响应——IDSIPSmsf流量后门分析

目录 0x01 网页篡改与后门攻击防范应对指南 0x02 主要需了解:日志存储,Webshel检测,分析思路等...

项目二:电子骰子

项目二&#xff1a;电子骰子 文章目录项目二&#xff1a;电子骰子一、导入(5分钟&#xff09;学习目的二、新授(65分钟)1.预展示结果(5分钟)2.本节课所用的软硬件(5分钟)3.硬件介绍(1分钟)4.图形化块介绍(1分钟)5.单个模块的简单使用(1分钟)6.电子骰子编程逻辑分析(25分钟)7.电…...

D. Genius‘s Gambit(很多情况)

Problem - D - Codeforces 已知三个整数a b k。求两个二进制整数z和y ( > y)满足1. y都由a个0和b个1组成;2. X - y(也是二进制形式)恰好有k个1。z和y不允许使用前导零。输入唯一的一行包含三个整数a, b和k (0 <a;1 <b;0<k < ab< 2- 105) -结果中0、1和1的个数…...

jsp824汽车维修保养管理系统javaEE+mysql

主要实现 1&#xff0e;车主信息管理&#xff1a;管理员发布车主信息后&#xff0c;普通用户查询到该车主信息&#xff0c;用户选择某个车主信息&#xff0c;查询车主信息&#xff0c;管理员审核添加&#xff0c;或删除车主信息。 2&#xff0e;保养信息管理&#xff1a;管理员…...

Linux下C/C++ redis协议(RESP)解析

Redis是一个开源的内存键值数据存储&#xff0c;最常用作主数据库、缓存、消息代理和队列。Redis提供了亚毫秒的响应时间&#xff0c;在游戏、金融科技、广告技术、社交媒体、医疗保健和物联网等行业实现了快速而强大的实时应用。 Redis连续五年成为开发人员最喜爱的数据库。开…...

IDEA 性能优化设置

在我们日常使用IDEA进行开发时&#xff0c;可能会遇到许多卡顿的瞬间&#xff0c;明明我们的机器配置也不低啊&#xff1f;为什么就会一直卡顿呢&#xff1f; “ 原来这是因为IDEA软件在我们安装的时候就设置了默认的内存使用上限&#xff08;通常很小&#xff09;&#xff0c;…...

手把手教你用DuckDB 1.3.0的DuckLake功能搭建数据湖(PostgreSQL+MinIO实战)

实战指南&#xff1a;基于DuckDB 1.3.0与MinIO构建企业级数据湖架构 在数据驱动的时代&#xff0c;企业需要更灵活、高效的解决方案来管理海量数据。DuckDB 1.3.0推出的DuckLake功能&#xff0c;结合PostgreSQL的元数据管理能力和MinIO的对象存储优势&#xff0c;为中小型企业…...

Electron + Vue 3 + Vite 桌面应用开发:从零到打包的实战指南

1. 为什么选择Electron Vue 3 Vite组合 如果你正在寻找一种既能快速开发又能保证性能的桌面应用解决方案&#xff0c;Electron Vue 3 Vite的组合绝对值得考虑。这个组合最大的优势在于开发体验的提升&#xff0c;特别是对于那些已经熟悉Vue生态的开发者来说。 Vite带来的开…...

MyBatis批量更新避坑指南:从`<foreach>`拼接SQL到`allowMultiQueries`配置的完整流程

MyBatis批量更新实战&#xff1a;从基础实现到性能调优全解析 批量更新操作是后端开发中绕不开的高频需求&#xff0c;但很多开发者在初次接触MyBatis批量更新时&#xff0c;往往会陷入各种"坑"中。本文将带你系统掌握两种主流实现方案&#xff0c;从基础用法到性能优…...

LaTeX-PPT:重新定义PowerPoint公式编辑体验

LaTeX-PPT&#xff1a;重新定义PowerPoint公式编辑体验 【免费下载链接】latex-ppt Use LaTeX in PowerPoint 项目地址: https://gitcode.com/gh_mirrors/la/latex-ppt 一、学术演示的隐形效率杀手 周三下午的组会演示前&#xff0c;李教授盯着屏幕上歪歪扭扭的公式叹气…...

SOONet模型Python入门实践:用10行代码实现视频片段搜索

SOONet模型Python入门实践&#xff1a;用10行代码实现视频片段搜索 你是不是也遇到过这种情况&#xff1a;手里有一段很长的视频&#xff0c;想快速找到某个特定场景&#xff0c;比如“主角第一次出场的时候”或者“那个爆炸的镜头”&#xff0c;结果只能手动拖进度条&#xf…...

编程技巧:模式切换程序框架

目录 1.模式切换程序框架 2.实现思路 3.模式切换程序框架 4.模式切换每个模式模块化流程 5.代码 Mode1.c Mode2.c Mode3.c Global.c main.c 1.模式切换程序框架 Init&#xff1a;进入模式前&#xff0c;执行一遍&#xff0c;用于初始化工作 Loop&#xff1a;执行完In…...

Nanobot技能扩展开发:自定义OpenClaw功能模块教程

Nanobot技能扩展开发&#xff1a;自定义OpenClaw功能模块教程 1. 引言 想给你的Nanobot智能助手添加一些个性化功能吗&#xff1f;比如让它帮你查天气、管理待办事项&#xff0c;或者连接你常用的办公软件&#xff1f;今天就来手把手教你如何为Nanobot开发自定义技能模块。 …...

BH1750光照传感器避坑指南:STM32的I2C通信那些事儿(附STM32F407调试心得)

BH1750光照传感器实战避坑&#xff1a;STM32 I2C通信深度解析与调试技巧 第一次用STM32驱动BH1750光照传感器时&#xff0c;我盯着纹丝不动的数据寄存器发呆了半小时——I2C总线明明显示通信成功&#xff0c;但读回来的光照值永远是零。这种看似简单却暗藏玄机的外设调试经历&a…...

AW88195音频编解码器驱动从MTK到RK平台的移植实践

1. 认识AW88195音频编解码器驱动移植 第一次接触AW88195音频编解码器驱动移植时&#xff0c;我也是一头雾水。这个来自艾为的音频芯片主要用于提升扬声器音质&#xff0c;但厂商提供的驱动包往往只适配特定平台。比如这次遇到的AW88195_Driver_MTK_V0.1.6.zip就是专门为MTK平台…...

vscode|无法连接到远程扩展主机服务器 (错误: CodeError(AsyncPipeFailed(Os { code: 2, kind: NotFound, message: “No such

无法连接到远程主机服务器&#xff08;错误&#xff1a; CodeError(AsyncPipeFailed(Os { code: 2, kind: NotFound, message: "No such file or directory" })))这是一个典型的 VSCode Remote-SSH 连接失败 错误。虽然本地网络正常、服务器在线&#xff0c;但 VSCod…...