70. with open( ) as 以自动关闭文件的方式打开文件

news2025/7/21 0:37:38

70. with open( ) as 以自动关闭文件的方式打开文件

文章目录

  • 70. with open( ) as 以自动关闭文件的方式打开文件
    • 1. 知识回顾
      • 1. open函数语法参考
      • 2. 准备工作
      • 3. mode模式知识回顾
    • 2. with open 语句的作用
    • 3. with open 语句语法
    • 4. with open 语句实操
    • 5. 总结
      • 1. 代码总结
      • 2. 重点知识
      • 3. mode模式
      • 4. 图片总结
      • 5. 温馨提示

1. 知识回顾

1. open函数语法参考

open 函数语法如下:

open(file, mode='r', encoding='None', errors='None')

参数 file 表示要打开文件的路径

参数 encoding 表示文件的编码方式,文件编码方式一般为 ‘utf-8’。

参数 errors 表示读写文件时碰到错误的报错级别。

参数 mode 决定了打开文件的模式。

r:以只读模式打开文件。

w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。

a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加。

参数 mode 可以不写,不写时mode默认值为r,即只读模式。

2. 准备工作

  1. 在D盘里新建一个文件夹命名为安迪

  2. 安迪文件夹里新建1个名为70的文件夹,在70文件夹里新建一个70.ipynb文件。

  3. 用vscode编辑器打开的名为安迪的文件夹。

  4. 在名为70的ipynb文件中编写下面的代码。

【备注】

编辑器打开的文件夹不同,则相对路径不同。

3. mode模式知识回顾

w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。

# w只写模式
f = open ("花名册.doc", "w", encoding="utf-8")

# 写入的内容
f.write("王小溪")

# 关闭文件
f.close()

"花名册.doc"是函数open的file参数,表示文件的相对路径。

运行上述代码,我们在70文件夹中新建了一个名为花名册.doc的文件。

并向花名册.doc文件写入了王小溪

重点关注最后一行代码,使用open函数打开文件,必须使用close来关闭文件。

# 关闭文件
f.close()

我们用绝对路径新建一个绝对花名册.doc文件,代码如下所示:

# w只写模式
f = open (r"D:\安迪\70\绝对花名册.doc", "w", encoding="utf-8")

# 写入的内容
f.write("王小溪")

# 关闭文件
f.close()

注意,绝对路径参数前面加上一个字母r/R,这时候就不需要使用反斜杆进行路径转义了。

上面的代码中我们都使用了close方法来关闭文件。

为了使代码更简洁,我们可以使用 with open 语句对 open 语句进行优化。

2. with open 语句的作用

【体验代码】

【open语句】

f = open ("花名册1.doc", "w", encoding="utf-8")
f.write("王小溪")
f.close( )

【with open 语句】

with open ("花名册2.doc", "w", encoding="utf-8") as f :
    f.write("王小溪")

上述2段代码实现的功能都是新建一个doc文件,并向文件写入王小溪

【区别是】

open 语句需要使用close关闭文件。

with open 语句不需要使用close关闭文件。

with open() as ... 是对原有 open( ) 和 close( ) 的优化。

使用with open() as ...语句时,代码块运行完毕后,程序会自动关闭文件,不用再写 close( )语句来关闭文件。

用法是把open()函数放在 with 后面,把变量名放在as后面,结束时要加冒号,然后把要执行的代码缩进到with open() as ...下方的代码块中。

3. with open 语句语法

with open ("花名册2.doc", "w", encoding="utf-8") as f :
    f.write("王小溪")
  1. 固定搭配 with open

  2. 语句参数;with open语句的参数和open函数的参数一样;

  3. 参数后接固定搭配 as ;

  4. as后紧跟接收文件对象的变量名f;(open 和with open返回的都是文件对象)

  5. 英文冒号:

  6. 四个空格的缩进;

  7. 缩进后紧跟代码块。

4. with open 语句实操

【目标任务】

  1. 用绝对路径和相对路径2种方法新建工资表文件;

  2. 工资表文件分别存放于桌面上和我们刚才新建的70文件夹中;

  3. 工资表文件中写入3个姓名及对应的工资。

【思路分析】

步骤1. 首先确定file参数:

绝对路径参数:

filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"

相对路径参数:

filename = "工资表.doc"

步骤2: 确定mode参数:

我们的额需求是写入且不覆盖原有内容,因此,这里我们可以直接用a追加模式。

初学者编写代码时可首先写好下面的框架:

with open (filename, "a", encoding='utf-8') as f:

然后添加路径参数:

filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:

最后添加要写入的内容:

filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
    f.write("张三,9000元\n李四,8000元\n王五,6000元")

绝对路径参数前面加上一个字母r/R,这时候就不需要使用反斜杆进行路径转义了。

上方代码中的最后一行代码中的\n是转义字符,作用是换行。

filename = "工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
    f.write("张三,9000元\n李四,8000元\n王五,6000元")

运行上述代码,大家就可以查看对应的文件夹里已新建了一个工资表.doc文件,并成功写入了对应的内容。

【温馨提示】

  1. 容易犯的错误是mode参数要记得加引号,部分初学者容易忘记这个引号。
"a"
  1. 注意with open 语句也有4个空格的缩进。

  2. 初学者路径参数最好用变量存储,这样在比较复杂的程序中,如果有错误,方便修改。

filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"

5. 总结

1. 代码总结

【绝对路径】

filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
    f.write("张三,9000元\n李四,8000元\n王五,6000元")

【相对路径】

filename = "工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
    f.write("张三,9000元\n李四,8000元\n王五,6000元")    

2. 重点知识

绝对路径参数前面加上一个字母r/R,这时候就不需要使用反斜杆进行路径转义了。

with open语句不需要使用close关闭文件。

注意with open 语句也有4个空格的缩进。

3. mode模式

w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。

a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加。

r:以只读模式打开文件。

4. 图片总结

在这里插入图片描述

5. 温馨提示

如果初学者在文件读写式遇到报错,首先考虑是file路径参数的错误。建议大家回看相对路径的相关知识,相对路径是非常重要的一个知识点,这个知识点必须理解清楚。不懂的小伙伴可私我。

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

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

相关文章

Pandas学习2

Pandas学习2 None 两种缺失数据:None、np.nan(NaN) None是python自带的,不能参与计算。类型是object np.nan 浮点类型,说明能参与计算,但是结果是nan pandas中的None和np.nan pandas中的None和np.nan都视为np.nan 如果列…

ArkUI新能力,助力应用开发更便捷

ArkUI是一套构建分布式应用的声明式UI开发框架。它具备简洁自然的UI信息语法、丰富的UI组件、多维的状态管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用户体验。随着HarmonyOS 3.1版本的发布&a…

签收后再补录物流信息单号要如何分析

随着网络时代电商平台掘起,购物平台也是越来越多,呈现出快递也是越来越多,电商平台和快递两者是密不可分,有下单就需要快递物流,所以快递公司也是很重要一个环节,最近有朋友向咨询如何分析出比如单号过已签…

Springboot扩展点之SmartInitializingSingleton

前言这篇文章会重点分析一下SmartInitializingSingleton扩展点的功能 特性、实现方式 、工作原理。SmartInitializingSingleton扩展点内只有一个扩展方法,且执行时机在Spring Bean的生命周期里比较靠后,很重要,但是也很简单。功能特性1、Smar…

0基础入行Java开发—详解Java泛型之详解通配符

今天我们来继续讲解泛型中另一个非常重要的概念&#xff0c;就是那个“小问号”——通配符! 通配符概念 泛型中除了用 表示泛型外&#xff0c;还有 <?>这种形式。&#xff1f; 被称为通配符。那么引入通配符的原因又是什么呢&#xff1f;看下面这段代码&#xff1a; …

格兰杰因果检验_Python实现

原理部分 代码实现 步骤 #mermaid-svg-kEtkcqkpRzxjdoOv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kEtkcqkpRzxjdoOv .error-icon{fill:#552222;}#mermaid-svg-kEtkcqkpRzxjdoOv .error-text{fill:#552222;s…

前端框架LayUI

Bootstrap框架 Bootstrap让前端开发更快速、简单。所有开发者都能快速上手、所有设备都可以适配、所有项目都适 用。 可以直接使用Bootstrap提供的 CSS 样式表&#xff0c;Bootstrap的源码是采用最流行的CSS预处理工具Less和Sass开发的。可以直接采用预编译的CSS文件快速开发…

2023面试题

目录 http部分 2、tcp 三次握手&#xff0c;一句话概括 3、tcp四次挥手 4、什么是跨域&#xff0c;跨越的解决办法 5、TCP 和 UDP 的区别 6、websocket 7、HTTP 请求的方式&#xff0c;HEAD 方式 8、几个很实用的 BOM 属性对象方法&#xff08;什么是 Bom? Bom 是浏览器对象&a…

重生之我是赏金猎人(三)-SRC漏洞挖掘-强行多次FUZZ发现某厂商SSRF到redis密码喷洒批量反弹Shell

0x00 前言 https://github.com/J0o1ey/BountyHunterInChina 欢迎大佬们点个star 最近BugBounty挖了不少&#xff0c;但大多数都是有手就行的漏洞&#xff0c;需要动脑子的实属罕见 而今天就遇到了一个非常好的案例&#xff0c;故作此文 0x01 对目录批量FUZZ&#xff0c;发…

数字孪生智慧机场:透视数字化时代下的航空运营

在《智慧民航建设路线图》文件中&#xff0c;民航局明确指出&#xff0c;智慧机场是实现智慧民航的四个核心抓手之一。这一战略性举措旨在推进数字化技术与航空产业的深度融合&#xff0c;为旅客提供更加智能化、便捷化、安全化的出行服务&#xff0c;进一步提升我国民航发展的…

示波器详解

&#x1f44d;&#x1f44d;&#x1f44d;本文是介绍和总结了示波器的一些内容&#xff0c;有助于大学生学习以及复习&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&#x1f447;&…

RTT IO设备模型

1. I/O 设备介绍 RT-Thread 提供了一套简单的 I/O 设备模型框架&#xff0c;如下图所示&#xff0c;它位于硬件和应用程序之间&#xff0c;共分成三层&#xff0c;从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。 应用程序通过 I/O 设备管理接口获得正确的设备驱…

纷享销客百思特 | 数字化营销赋能企业新增长沙龙圆满落幕

为进一步帮助企业客户实现数字化转型&#xff0c;纷享销客联合百思特管理咨询集团&#xff0c;于2月10日举办 “数字化营销赋能企业新增长”主题沙龙。本次活动以“新变革新增长”为主题&#xff0c;现场30余位制造企业高管齐聚一堂&#xff0c;共同探讨企业如何在当前复杂的宏…

都2023年了,如果不会Stream流、函数式编程?你确定能看懂公司代码?

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 Stream流、函数式编程 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649;&#x1f649;。 ♨️如果…

【靶机】vulnhub靶机pylington

靶机下载地址 Pylington: 1 ~ VulnHub kali ip&#xff1a;192.168.174.128 靶机ip&#xff1a;192.168.174.146 arp-scan -l发现靶机ip是192.168.174.146 进行靶机的端口扫描&#xff0c;这里使用的是nmap的gui 可以发现开放了21和80端口&#xff0c;80端口扫描到了robot…

Spring6之HTTP Interface分析

文章目录1 HTTP Interface1.1 引言1.2 示例1.2.1 创建服务端1.2.2 SpringBoot工程1.3 深入分析1.3.1 GetExchange&#xff08;HttpExchange&#xff09;1.3.2 UserApiService 实例创建1.4 其他特性1 HTTP Interface 1.1 引言 近期&#xff0c;Spring 6 的第一个 GA 版本发布了…

【SSM】篇一:初试Spring--Ioc、Bean与容器

文章目录1、Spring2、SpringFramework系统架构3、BeanBean的配置Bean的实例化Bean的生命周期4、依赖注入DIsetter注入和构造器注入依赖自动装配集合注入案例--数据源对象管理加载properties文件5、容器创建容器的两种方式获取bean的三种方式容器类层次结构图1、Spring Spring地…

算法思想 - 搜索算法

本文主要介绍算法中搜索算法的思想&#xff0c;主要包含BFS&#xff0c;DFS。搜索相关题目深度优先搜索和广度优先搜索广泛运用于树和图中&#xff0c;但是它们的应用远远不止如此。BFS广度优先搜索的搜索过程有点像一层一层地进行遍历&#xff0c;每层遍历都以上一层遍历的结果…

【C/C++基础练习题】复习题三,易错点知识点笔记

C复习题知识点记录&#xff1a; 在定义结构体类型时&#xff0c;不可以为成员设置默认值。 在公用一个共用体变量时。系统为其分配存储空间的原则是按成员中占内存空间最大者分配 a ,La, "a", L"a" 字符 长字符 字符串 长字符串 布尔类型只有两个值 fal…

尚医通(十四)Spring Cloud GateWay网关 | 跨域 | 权限认证

目录一、网关基本概念1、API网关介绍2、Spring Cloud Gateway3、Spring Cloud Gateway核心概念二、创建service_gateway模块&#xff08;网关服务&#xff09;1、创建service_gateway模块2、在pom.xml引入依赖3、编写application.properties配置文件4、编写启动类5、前端端口号…