Python读写文件之with open()
文章目录
- 1 读文件
- 1.1 使用open()和close()
- 1.2 使用with open()
- 2 写文件
- 2.1 字符编码
- 2.2 读写方式列表
- 2.3 file object的属性
1 读文件
1.1 使用open()和close()
使用Python内置的open()函数,传入文件名和标示符:
>>> f=open(r'F:\jupyter notebook files\text files.txt','r') #标示符'r'表示读
如果文件不存在,open()函数就会抛出一个错误,并且给出错误码和详细的信息告诉你文件不存在:
>>> f=open(r'F:\jupyter notebook files\text.txt','r')
Traceback (most recent call last):File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'F:\\jupyter notebook files\\text.txt'
调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:
>>> contents=f.read()
>>> print(contents)
naruto
bleach
onepiece
最后需要调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:
>>> f.close()
由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现:
try:f=open(r'F:\jupyter notebook files\text files.txt','r')contents=f.read()print(contents)
finally:if f:f.close()
输出如下:
naruto
bleach
onepiece
1.2 使用with open()
每次都写close()比较繁琐,Python引入with语句,这样能够确保最后文件一定被关闭,且不用手动再调用close方法,效果和前面的try … finally是一样的。
注意:
- 1、调用read()会一次性读取文件的全部内容
with open(r'F:\jupyter notebook files\text files.txt','r') as f:contents=f.read()print(contents)
输出如下:
naruto
bleach
onepiece
- 2、调用readline()可以每次读取一行内容
with open(r'F:\jupyter notebook files\text files.txt','r') as f:a=f.readline()print(a)b=f.readline()print(b)c=f.readline()print(c)
输出如下:
narutobleachonepiece
- 3、调用readlines()一次读取所有内容并按行返回list
with open(r'F:\jupyter notebook files\text files.txt','r') as f:a=f.readlines()print(a)
输出如下:
['naruto\n', 'bleach\n', 'onepiece']
2 写文件
调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件:
with open(r'F:\jupyter notebook files\text files.txt','w') as f:a=f.write('attack on titan\n')
要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码。
2.1 字符编码
要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:
with open(r'F:\jupyter notebook files\gbk.txt', 'r', encoding='gbk') as f:a=f.read()print(a)
输出如下:
gbk文本
遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
with open(r'F:\jupyter notebook files\gbk.txt', 'r', encoding='gbk',errors='ignore') as f: #注意errors='ignore'a=f.read()print(a)
2.2 读写方式列表
2.3 file object的属性
参考文献:
python 使用 with open() as 读写文件
Python读写文件之with open()相关推荐
- python文件对象提供了3个读方法、分别是-Python读写文件模式和文件对象方法实例详解...
本文实例讲述了Python读写文件模式和文件对象方法.分享给大家供大家参考,具体如下: 一. 读写文件模式 利用open() 读写文件时,将会返回一个 file 对象,其基本语法格式如: open ( ...
- python文件读取输出-Python 读写文件中数据
1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图 图2 输出文件 h264 ...
- python如何读写文件-Python读写文件
python读写文件是很常见的操作,而多数情况下是对纯文件的读写操作. 我们先看一下,纯文本是如何进行读写操作的. """ created by nzh Date: 20 ...
- python写文件读文件-Python 读写文件和file对象的方法(推荐)
1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.tx ...
- python读写文件实例_python读写文件的简单示例
这篇文章主要为大家详细介绍了python读写文件的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 首先看一个例子: # 来自www.512 ...
- python读写文件代码_Python 读写文件的操作代码
Python读写文件模式 1.r 打开只读文件,该文件必须存在. 2.r+ 打开可读写的文件,该文件必须存在. 3.w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立 ...
- Python读写文件(附完整模块化代码)
一.前言 Python读写文件的代码有许多形式,虽然十分简单,但是每次使用时都需要查找才能用上.所以鄙人用自己贫乏的Python功力编写了一个读写模块的模板,希望最大化方便有文件读写需求的朋友. 二. ...
- python 读写文件 另存为_python读写文件(五)
今天继续分享python读写文件. 首先介绍一个新的函数open(),这个函数是干什么的呢?在python里面可以用open函数来打开文件.要用open函数打开一个文件,就是要向它传递一个字符串路径, ...
- python怎么读写文件-python读写文件
python读写文件是很常见的操作,而多数情况下是对纯文件的读写操作. 我们先看一下,纯文本是如何进行读写操作的. """ created by nzh Date: 20 ...
- python读写文件的语句_用Python读写文件指南
用Python读写文件(指南) [TOC] 使用Python最常见的任务之一是读取和写入文件.无论是写入简单的文本文件,读取复杂的服务器日志,甚至是分析原始字节数据,所有这些情况都需要读取或写入文件. ...
最新文章
- 通过改进算法来优化程序性能的真实案例(Ransac)
- 平衡树 - treap
- 深度学习之误差反向传播法
- 实验八 分析一个奇怪的程序
- oracle数据库sid已存在,Oracle SID在本机下已经存在,请指定一个不同的SID”的解决方法...
- 都是套路:高并发系统的降级特技
- MySQL 中存储时间的最佳实践
- linux中mysql数据库启用日志记录_MYSQL启用日志,和查看日志
- BeetleX网关非法Url请求拦截插件
- Java学习之数据类型的转换
- android百度定位没反应,百度定位回调无反应,第一次能回调到数据,第二次无反应...
- spine骨骼动画基础一文通
- Geoda空间自相关分析—局部Moran‘I指数(运用GeoDa制作Lisa图)
- springboot-jpa-querydsl
- 11g OCM 考试感悟
- js判断是否微信登陆
- Python列表解析式-生成器
- Excel精选28个实用技巧实例学习
- 当android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程 .
- linux iio 设备驱动,Linux设备驱动之IIO子系统——IIO框架数据读取,linuxiio