python中的with open读取表格文件_python 使用 with open() as 读写文件

读文件:

要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:

>>> f = open('E:\python\python\test.txt', 'r')

标示符'r'表示读,这样,我们就成功地打开了一个文件。

如果文件不存在,open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉你文件不存在:

f=open('E:\python\python\notfound.txt', 'r')

Traceback (most recent call last):

File "", line 1, in

FileNotFoundError: [Errno 2] No such file or directory: 'E:\python\python\notfound.txt'

如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:

>>> f.read()

'Hello, python!'

最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

>>> f.close()

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:

try:

f = open('/path/', 'r')

print(f.read())

finally:

if f:

f.close()

每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

with open('/path/to/file', 'r') as f:

print(f.read())

这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

调用read()会一次性读取文件的全部内容,如果文件有20G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。

如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:

for line in f.readlines():

print(line.strip()) # 把末尾的'\n'删掉

写文件

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:

>>> f = open('E:\python\python\test.txt', 'w')

>>> f.write('Hello, python!')

>>> f.close()

可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:

with open('E:\python\python\test.txt', 'w') as f:

f.write('Hello, python!')

要写入特定编码的文本文件,请给open()函数传入encoding参数,将字符串自动转换成指定编码

字符编码

要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:

>>> f = open('E:\python\python\gbk.txt', 'r', encoding='gbk')

>>> f.read()

'测试'

遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:

>>> f = open('E:\python\python\gbk.txt', 'r', encoding='gbk', errors='ignore')

二进制文件

前面讲的默认都是读取文本文件,并且是UTF-8编码的文本文件。要读取二进制文件,比如图片、视频等等,用'rb'模式打开文件即可:

>>> f = open('E:\python\python\test.jpg', 'rb')

>>> f.read()

b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节

总结:以后读写文件尽量使用with open语句,少使用f = open()语句

对于多个文件的读写,可以写成以下两种方式:

1、

with open('C:\Desktop\text.txt','r') as f:

with open('C:\Desktop\text1.txt','r') as f1:

with open('C:\Desktop\text2.txt','r') as f2

........

........

........

2、

with open(''C:\Desktop\text.txt','r') as f:

........

with open(''C:\Desktop\text1.txt','r') as f1:

........

with open('C:\Desktop\text2.txt','r') as f2:

........

文件的读写方式列表:

70

File 对象属性:

70

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

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

相关文章

实用必备xp框架模块_Xposed框架安装、使用以及插件开发

Xposed框架:是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。对原生Launcher替换图标等应用或功能均基于此框架。1、安装xposed…

3D动作绑定_3D动漫制作软件,你知道几个?

最近小编收到很多私信,都是问小编3D动画是靠什么软件制作而成的?小编经过长时间的查询,今天就给大家来讲一讲3D动画到底是靠什么软件制作而成的。首先,先给大家来讲讲3D动画在国内的制作。动画制作是个庞大的工业流程,…

plc单片机组态软件php_STC8单片机扩展WiFi通信实现功能与组态王组态软件详细组态...

STC8单片机扩展WiFi通信模块和组态王组态软件实现Modbus TCP以太网通信一、通信实现功能:1、Modbus TCP Client:组态王组态软件2、Modbus TCP Server:STC单片机WiFi通信模块3、组态王组态软件对单片机数字量输入、晶体管输出、模拟量输入、模…

linux set权限,Linux 特殊权限set_uid(示例代码)

特殊权限set_uid默认情况下 , 在新安装好的Linux系统下 , 仅有一个命令是拥有set_uid特殊权限的 .拥有s权限的命令(文件) : 为了确保非所有者用户 , 在使用该命令时,临时拥有所有者的身份 ; 给一个文件设置set_uid特殊权限,前提是该文件是一个可执行的二进制文件(一般都是给命令…

python中如何编写代码输入多个数据并把它们放在一个列表中去_10分钟学习函数式Python...

在这篇10分钟的文章中,您将学习Python中的函数式范型。您还将学习列表推导式。目录函数式范式Python的map函数是如何运行的Python中的lambda表达式Python中的reduce函数filter函数Python中的高阶函数带有函数的部分应用函数编程不是Python化列表推导式任何可迭代对象…

python 切片器_PowerBI-将日期显示为星期作为切片器

表:表有字段From_Date,Week_Code (1-7)需求:添加切片器WEEKDAY显示值Monday,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday。选择Monday时&…

linux 串口格式化输出字符串,如何把电压这个浮点值转字符串输出到串口

问题一:如何把电压这个浮点值输出到串口屏?要解决这个问题,要使用C语言的sprintf这个语句,具体语句的详细内容可以自行百度下,这里仅提供简单使用方法:sprintf是需要stdio.h来声明的,因此需要在…

c++ mqtt客户端_MQTT详解及百度物接入连接手机测试(含源码) 秦子帅

MQTT简介MQTT定义MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动…

qgraphicsitem 复制副本_删除/删除/替换QGraphicsTextItem中的选定文本

不工作QTextCursor::removeSelectedText()?在下面的例子中,我们在一开始的文字QGraphics Text Item 1,但正如你所看到的,我们可以得到QTextDocument,也是QTextCursor该文档,并插入一些话。之后,…

antix linux安装教程,antiX 19.1 发布,轻量级的桌面Linux发行版

antiX是一种轻量级的桌面Linux发行版,以IceWM作为默认窗口管理器,已升级到版本19.1。尽管主要是一个错误修复版本,但新版本还将IceWM更新到版本1.6.3:提供了antiX-19.1错误修复/升级ISO映像。所有新ISO映像都是antiX 19 SysVInit系…

jira使用教程pdf_jira项目管理系统使用指南.pdf

jira项目管理系统使用指南.pdf 目录1 项目管理系统简介 . 错 误 未定义书签。1.1 系统涉及的角色 1 1.1.1 管理人员 1 1.1.2 项目管理者 1 1.1.3 开发人员 1 1.1.4 测试人员 1 1.1.5 其他人员 1 2 JIRA 的基本概念 . 2 2.1 什么是问题 . 2 2.1.1 问题类型 3 2.1.2 优先级 . 3 2…

electron增加导航按钮_Electron发布6.0 Released版本

简介在第5版发布仅3个月后,流行的基于JavaScript的跨平台桌面应用程序构建平台达到了第6版,并使用了Chromium 76,Node 12.4和V8 7.6。6.0.0发行说明突破性变化升级到Chromium 76.0.3809.88,Node.js 12.4.0和V87.6.303.22修复了net…

linux u盘刻录软件,Deepin Linux下刻录Windows安装U盘:WoeUSB的介绍和应用

WoeUSB是用于GNULinux的Microsoft Windows USB安装介质工具,用它可以在Deepin等Linux系统下刻录Windows安装U盘。介绍1、特征:支持旧版PC/UEFI引导。支持FAT32和NTFS文件系统。支持使用物理安装光盘或磁盘映像作为源。2、支持的Windows安装映像&#xff…

曲线积分与曲面积分总结_高数下册||知识点总结

知识点总结— 期末来临,你准备好了吗 —高等数学学下一转眼又一学期即将结束期末考试也悄悄地临近了大家都准备好了吗我们为大家带来了高等数学(下)的复习资料来吧,展示!1向量代数与空间解析几何首先我们看到的是向量代数与空间解析几何的重点…

python流程控制框架_Python基础(相关历史、交互、简单流程控制)

开始学习Python啦,希望能坚持下来,在博客园里记录一下学习过程,感谢博客园提供平台!Python发展史1989年圣诞节,Guido开始写Python语言的编译器,Python这个名字源于Guido所挚爱的电视剧 Monty Pythons Flyin…

linux系统需要备份吗,准备好了吗?请备份你的Linux系统

一、我们需要备份什么?我的 Linux 系统是基于 Redhat 的Redhat Linux 9.0,同时配置了诸如 MySQL、PHP、Apache 等基础服务,同时又配有 Awstats、MRTG、MT 等应用服务程序,因此,我们需要备份的除了系统本身的重要文件以外,还需要备…

java解析excel文件_1.3.1 python解析excel格式文件

Excel表格Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。excel文档的基本定义工作薄(workbook)工作表(sheet)活动表(active sheet)行(row): 1,2,3,4,5,6……..列(column): A,B,C,D……..单元格(cell): B1, C1excel文件格式P…

python继承如何进行引用传递的区别_python在什么情况下会引用传递呢?

我写了一个对单链表进行排序的程序,核心部分如下:class Solution:def insertionSortList(self, head):ans Nonecur headwhile cur is not None:if ans is None or ans.val > cur.val:tmp ListNode(cur.val)tmp.next ansans tmpcur cur.nextcont…

linux通过不同端口访问,linux下两个tomcat通过不同端口访问不同项目

首先安装JDKchmod 777 jdk-7u51-linux-x64.rpmrpm -ivh jdk-7u51-linux-x64.rpm添加环境变量vim /etc/profile 行尾添加下面内容#Java Environment variableJAVA_HOME/usr/java/jdk1.7.0_51PATH$JAVA_HOME/bin:$PATH:$HOME/binCATALINA_HOME/usr/local/tomcatexport LD_LIBRARY…

算法python知乎_20个算法李小文知乎文章与Github代码汇总

李小文知乎文章与Github代码汇总共建立了2个Github项目,实现了20个算法,写了12篇知乎文章。---------------------------------------------------------------------------------------【Github项目】机器学习https://github.com/tushushu/imylu​githu…