目录

常规读取文件:

with open () as 读取文件

读取方法区别

写文件

读取字符编码文件

读取二进制文件

总结

附录


常规读取文件:

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

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

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

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


Traceback (most recent call last):File "<stdin>", line 1, in <module>FileNotFoundError: [Errno 2] No such file or directory: 'E:\python\python\notfound.txt'

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

 f.read()

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

f.close()

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

try:f = open('/path/', 'r')print(f.read())finally:if f:f.close()

with open () as 读取文件

每次都这么写实在太繁琐,所以,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()语句

附录

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

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
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:
........

文件的读写方式列表:

File 对象属性:

参考:

https://blog.csdn.net/xrinosvip/article/details/82019844

Python项目开发基础 -- with open (filename) as 读写文件相关推荐

  1. Python自动化开发基础 项目实战-监控系统 Day16-李杰-专题视频课程

    Python自动化开发基础 项目实战-监控系统 Day16-14487人已学习 课程介绍         课程特色:实战,细致,生动,深入浅出 适用人群:适合Python初学者 课程详情:从0基础开始 ...

  2. python项目开发实战网盘-python项目开发实战 第2版

    python项目开发实战 第2版是一本Python项目开发流程实战手册,由日本BePROUD股份有限公司编著.本书的内容全部基于python开发事实,全部都是BeProud员工实际尝试.实践过的,可以 ...

  3. python项目开发实战网盘-《Python项目案例开发从入门到实战》PDF版百度网盘

    「教程分享:Python项目开发从入门到实列」 本书例子具有实用性,20个不同类型的完整列子,600分钟高品质配套教学视频,完整的源码和教学课件,让你对枯燥的Python语言学习充满乐趣. 编辑推荐 ...

  4. python项目开发案例-Python项目开发案例集锦 PDF 全彩超清版

    给大家带来的一篇关于Python案例相关的电子书资源,介绍了关于Python.项目开发.Python案例方面的内容,本书是由吉林大学出版社出版,格式为PDF,资源大小99.1 MB,明日科技编写,目前 ...

  5. python项目开发实战-给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  6. python项目开发案例集锦_在线分享 | 在 VS Code 中一站式完成 Python 项目开发

    往期活动回顾 VS Code 中文社区自成立以来,已经举办了4场活动: Workshop | First Step to VS Code 基础篇 Workshop | First Step to VS ...

  7. python项目开发实例-《Python项目案例开发从入门到实战》PDF版百度网盘

    「教程分享:Python项目开发从入门到实列」 本书例子具有实用性,20个不同类型的完整列子,600分钟高品质配套教学视频,完整的源码和教学课件,让你对枯燥的Python语言学习充满乐趣. 编辑推荐 ...

  8. Python excel xlwings+QT 考勤表开发 -【Python Office开发基础培训】 拆分合并文件

    Python excel xlwings+QT 考勤表开发 1. 概述 2. QT界面搭建 2.1搭建界面 3. 搭建软件架构 3. 读取输入文件 3.1链接文件 3.2读取表格 3.3解析为树状结构 ...

  9. python实战一个完整的项目-Python项目开发实战(第2版)高清晰PDF完整版+代码

    会写代码≠能做好项目! 1.建立有序生产环境 2.迅速融入开发团队 3.高效处理项目问题 网罗Python项目开发中的流程,让你的编程事半功倍 Python项目与封装/团队开发环境/问题驱动开发/源码 ...

  10. python项目开发实例书-Python项目开发实战

    本书案例具有实用性,如校园网搜索引擎.小小翻译器.抓取百度图片这些爬虫案例略加修改可以应用实际项目中:还有通过微信通信协议开发微信机器人,机器学习的文本分类.基于卷积神经网络的手写体识别等案例,另外是 ...

最新文章

  1. QEventLoop的简单使用(一)
  2. 设有n个正整数,将它们排成一排,组成一个最大的多位整数
  3. [渝粤教育] 中国地质大学 信息资源管理 复习题 (2)
  4. 批处理ping指定ip列表
  5. lombok的使用三部曲及使用中遇到的问题(持续更新)
  6. “XEIM”国内开源即时通讯XEIM
  7. php和xml区别,php和XML
  8. Mac OS X安装 ffmpeg
  9. Markdown图片并排展示、图注对齐
  10. Spark RDD的运行机制 工作节点分布关系
  11. 5G啊5G,你是不是只比4G多一G?
  12. android pc投屏,如何解决乐播投屏中投屏失败的问题【乐播投屏】
  13. 美团搜索多业务商品排序探索与实践
  14. 微软Win8Server2012各版本安装密匙序列号
  15. php 中%3cspan%3e,隐藏第三方网站统计图标
  16. 20140124孤独者之旅23
  17. 烤仔的朋友们 | 细数11位身价超十亿美元加密富豪,灰度创始人仅排第七
  18. xp外观主题下载_增强Windows XP外观的简便方法
  19. Typhon升级到5.8,编译原来程序出现提示:Compilation raised exception internally
  20. TMS320f28335实现步进电机的驱动程序及原理分析

热门文章

  1. nginx配置ssl证书的方法
  2. Decide what you want,and go after it with everything you got!
  3. 构建之法1,5,17章学习心得
  4. Android 第三方应用接入微信平台(2)
  5. Pointer Networks简介及其应用(格式化)
  6. 通过图像的指针读取图像
  7. Conditional Generative Adversarial Nets论文翻译
  8. 摄影测量学之共线方程的应用
  9. Apache Flink 在快手的过去、现在和未来
  10. 如何在 Flink 1.9 中使用 Hive?