Python 中 open(),close()组合与 with open()的区别
目录
- 一、open()函数的基本用法
- 1. 读取文件
- 2. 打开模式
- 3. 编码方式
- 二、open(),close()与 with open()的区别
一、open()函数的基本用法
在介绍区别之前先简单说明 open() 函数的用法,分为以下三个部分:
1. 读取文件
使用格式:
文件句柄 = open('文件路径', '模式',编码方式)
流程如下:
f = open(file_path, 'r', encoding='utf-8') # 打开文件, 编码方式可省略,一般取默认
data = f.read() # 读取文件
print(data) # 打印读取内容
f.close() # 关闭文件或
with open(file_name, 'r') as f:data = f.read() # 读取文件print(data) # 打印读取内容
注意,上述文件的 file_path 也就是文件的路径,可以是绝对路径(文件在硬盘的位置路径),也可以是相对路径(与脚本同在一个目录下)。
上述读取文件是使用 read () 表示读取整个文件的内容,也可以使用 readline() 表示读取文件一行,或 readlines() 按行读取文件内容。最后要使用 close() 函数关闭文件。
2. 打开模式
模式的参数也就是第二个参数,主要有以下模式:
r 以只读方式打开文件。这是默认模式,文件必须存在,不存在抛出错误
rb 以二进制格式打开一个文件用于只读。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头,读完就追加。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
注:后面有带 b 的方式,不需要考虑编码方式。带 + 号的,则可读可写,不过它们之间还是有区别的。
3. 编码方式
- win系统默认是gbk编码的,所以桌面生成的TXT之类的都是gbk编码的;
- 出现乱码,一般都是原文件的编码方式和打开指定的编码不一致所致。
二、open(),close()与 with open()的区别
这也是我们平时读取文件容易忽略的地方。
- 一般是使用 open() 和 close() 组合来打开和关闭文件。
但这样做时,如果程序存在bug,导致close()语句未执行,文件将不会关闭。这看似微不足道,但未妥善地关闭文件可能会导致数据丢失或受损。如果在程序中过早地调用close(),你会发现需要使用文件时它已关闭(无法访问),这会导致更多的错误。 - 关键字 with 在不再需要访问文件后自动将其关闭。
在这个程序中,注意到我们调用了open(),但没有调用close();并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用关键字 with,可让Python去确定:你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。
Python 中 open(),close()组合与 with open()的区别相关推荐
- python中remove函数是什么意思,python中pop函数和remove函数有什么区别
python中pop函数和remove函数有什么区别 发布时间:2020-12-10 09:36:18 来源:亿速云 阅读:80 作者:小新 小编给大家分享一下python中pop函数和remove函 ...
- python中模块(Module)和包(Package)的区别 (导入模块、导入包)(import导包)
如下结构,mycompany就是包,abc.py和xyz.py就是模块 mycompany ├─ __init__.py ├─ abc.py └─ xyz.py 参考文章:Python中模块(Modu ...
- Python中“xx+=xx”与“xx=xx+xx”的区别
Python中"xx+=xx"与"xx=xx+xx"的区别: 可变类型有: list(列表),dict(字典) 不可变类型有: string,integer,t ...
- python中的单引号和双引号的区别
python中的单引号和双引号的区别 今天在码代码的过程中突然想到这个问题,于是上网浏览了一下,发现在python中两种表达方式是没有区别的,两种表达方式都可以用来表达一个字符串.但是这两种通用的表达 ...
- Python中集合set和字典dict的用法区别
Python中集合set和字典dict的用法区别 核心知识点 Python列表(list).元组(tuple).字典(dict)和集合(set)详解 Python set集合详解 1. Python创 ...
- python列表和元组的应用,Python中列表和元组的使用方法和区别
一.二者区别 列表: 1.可以增加列表内容 append 2.可以统计某个列表段在整个列表中出现的次数 count 3.可以插入一个字符串,并把整个字符串的每个字母拆分当作一个列表段追加到列表当中 e ...
- python中继承和组合的区别_Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类...
一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...
- Python中is、not、is not的区别
Python中is和not是两个关键字,而is not的组合可以看作又一个关键字,不可以将其看作是两个关键字的简单堆砌. 1. "is" keyword is关键字的作用是判断两个 ...
- Python 中读取和保存图像方法汇总及其区别
方法一:利用 PIL 中的 Image 函数 这个函数读取出来不是 array 格式,这时候需要用 np.asarray(im) 或者 np.array()函数 .区别:np.array() 是深拷贝 ...
- python中的apply(),applymap(),map() 的用法和区别
在Python中如果想要对数据使用函数,可以借助apply(),applymap(),map() 来应用函数,括号里面可以是直接函数式,或者自定义函数(def)或者匿名函数(lambad) impor ...
最新文章
- JMC | 人工智能在药物合成中的当前和未来作用(3)
- js设置元素class方法小结及classList相关
- UIKit框架-高级控件Swift版本: 5.UITextView方法/属性详解
- 攻击需要成本吗_石子厂成本大概多少?开一个石子厂都需要哪些设备,价格高吗 ?...
- 二叉查找树--插入、删除、查找
- 数字化方法基础_常用函数
- java基础5 (一维)数组和二维数组
- Python大数据处理方案
- STM32串口通信实例
- Activity 过渡动画 — 让切换更加炫酷
- 康奈尔笔记法,高效学习方法推荐
- 二极管,电容正负极判断(图文)
- 新疆计算机操作题,新疆维吾尔自治区教师计算机操作题复习8套.pdf
- 哪些晦涩难懂的shell命令都是什么的缩写?
- Element table 导出Excel重复数据
- 用python画函数图像
- LeetCode 6194. 最小 XOR
- mybatis if-else(chose when otherwise )
- HRM- Fusion体验报告
- docker进入容器出现bash-4.2#解决办法
热门文章
- vue method ajax上传文件,前端上传文件追根溯源_和_antd_vue上传文件实例
- 黄家驹--奔跑在理想与诗意的道上
- DDCTF2018逆向 黑盒
- Android: viewHolder 复用错乱导致的显示错误
- 荣耀笔记本linux版跑分,4K入了台荣耀MagicBook锐龙版笔记本电脑,跑分没令我失望...
- 阿里云ACA认证课程学习(阿里云简介掌握云服务器ECS)
- 项目管理英语词汇总结·二十一
- 一文读懂:Kafka(分布式消息队列)的基础概念,教程
- PS之创建中性灰磨皮观察图层
- js 社会主义点击事件