Python3中打开文件的方式(With open)
提示:以下是本篇文章正文内容,下面案例可供参考
一、了解文件基本概念
1.什么是文件
文件是存放在外部介质 (如硬盘、U盘) 上的一组完整信息的集合。这些信息可为各种文字、 图形、图像、电影、音乐,甚至包括病毒程序等。
2.两种重要的文件类型
• 文本文件(Text File)。文本文件是可直接阅读的,使用记事本打开即可看到文件的内 容。
• 二进制文件(Binary File)。这类文件将数据按照它的进制编码的形式存储。如BMP。由 于这类文件内容是二进制编码,使用记事本打开是显然是乱码,BMP可用图片查看器解 码。
3.文本文件与二进制文件的优缺点
无论什么类型的文件,在硬盘/内存=> 二进制
- 文本方式读:内存->看(转换)
- 二进制方式读: 内存-> 看到一致
4.python3中的字符串类型
• bytes 转换:bytes->str : decode(‘utf8’)
• str 转换: str->bytes: encode(‘utf8’)
注意:encode编码时可指定任何合适的编码方式,但decode解码时,一定需要对应的编码方式
5.文件的缓冲机制
读操作:不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后 程序再从缓冲区中读取所需数据
写操作:不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数 据写入磁盘
文件缓冲区
计算机系统为要处理的文件在内存中单独开辟出来的一个存储区间,在读写该文件时,做为数据交换的 临时“存储中转站”。
缓冲机制的好处
能够有效地减少对外部设备的频繁访问,减少内存与外设间的数据交换,填补内、外设备的速度差异, 提高数据读写的效率。
二、文件基本操作
1.访问文件操作过程
• 打开文件
• 读取文件 将信息读到内存
• 写入文件
• 关闭文件 保存文件并释放内存空间
2.打开文件(open)
file : 要打开的文件名( str )
• mode: 打开文件的方式( str ) => text, bytes
• encoding: 文件编码方式(str)
• errors: 当发生编码错误时的处理方式(str) ‘ignore’或’strict’(默认) • buffering: 缓存方式 ( int)
3.最简单的文件操作
打开一个文件”example.txt“
打印文件内容
4.打开文件-文件编码
• encoding: 文件的编码方式( str )
• encoding的默认值:None, 不同的平台打开的方式不一样
• encoding is the name of the encoding used to decode or encode the file. This should only be used in text mode. The default encoding is platform dependent。
Encoding是用于解码或编码文件的编码名称。 这应该只在文本模式下使用。 默认编码是平台相关的
5.为什么需要编码
对于计算机来说,所有信息都是由0和1组成的二进制。
人类无法仅用二进制就来完成计算机的各种操作
字符编码解决人与计算机之间的沟通问题
6.常见编码
文件编码案例
(1)制作2个文件
• “gbk.txt” 保存为GBK编码
• “utf8.txt” 保存为UTF-8编码
(2)测试打开文件
• 用默认方式
• 用正确的编码方式打开
• 显示地指定编码方式
7.判断文件编码-chardet模块
• 安装:pip install chardet
• 检测
8.打开文件-mode
(rwxa任选其一, tb任选其一,+是可选项)
快 问 快 答
以下是需要什么模式打开
• 读取本地图片
• 将网络上的图片保存到本地
• 接收用户输入,将内容保存到文件末尾
• 接收用户输入,将内容保存到文件,如果文件已存在,则覆盖原内容
9.关闭文件
• 为什么要关闭文件
• 文件忘记关闭
• 遇到异常怎么办
关闭文件-用with语句打开
三.文件的读写操作
1.读取文件内容
小 练 习
准备一个example.txt文件, 里面随便写入些内容(如一首歌词)
读前5行。
读全文
读取最后12字节 => str格式
读取最后4个汉字 => str格式
2.写文件
• 为什么不实时写入磁盘 硬盘是慢设备,频率读写会增大磁盘压力,产生瓶颈
• 什么时候会写入磁盘
• f.flush()
• f.close()
• buffer设置(默认:io.DEFAULT_BUFFER_SIZE )
• 0 => 实时写入 (binary mode)
• 1 => 行缓存 ( text mode) => \n
• 其他数字n => 缓冲区大小n : 2*4096
 强行写入
f.close() 关闭文件
buffer参数默认值
buffer参数不缓存
buffer参数行缓存
buffer参数设置指定大小
3.文件对象其他方法
四. 小练习
1.ip存储与读取文件统计ip频率 (京东二面题)
生成一个大文件ips.txt,要求120000行,每行随即为172.25.254.0/24段的ip;
•读取ips.txt文件统计这个文件中ip出现频率前10的ip;
访客:编写一个程序,提示用户输入其名字;用户作出响应后,将其名字写 入到文件 guest.txt 中。
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
2.已知一个文件 test.txt
内容如下:
2002年的第一场雪,比以往时候来的更晚一些
停靠在八楼的二路汽车,带走了最后一片飘落的黄叶
2002年的第一场雪,是留在乌鲁木齐难舍的情结
• 请输出其内容。
• 请取出最后3个字节。
• 请从字符串的最初开始,截断该字符串,使其长度为12字节
3.词频统计
• 已经有一个瓦尔登湖的文本,“Walden.txt” • 统计这篇文章的词频(每个词出现的次数)
• 不统计标点符号
• The和the被统计成同一个词(不区分大小写)
• 输出格式:{ ‘the’: 10, ‘is’: 45…}
总结
1.文件操作在日常的工作场景中十分常见,文件的读取和写入是正常操作,一定要掌握哦。
2.对于第二章的一些命令和操作要重点掌握,这是个孰能生巧的过程,一定要多多练习哈