【Python基础知识-pycharm版】⽂件操作(IO技术)
Python014
⽂件操作(IO技术)
实际开发中,我们经常需要从外部存
储介质(硬盘、光盘、U盘等)读取数据,或者将程序产⽣的数据存储到⽂件中,实现“持久化”保存。
很多软件系统是将数据存储的数据库中;数据库实际也是基于⽂件
形式存储的
⽂本⽂件和⼆进制⽂件
按⽂件中数据组织形式,把⽂件分为⽂本⽂件和⼆进制⽂件两⼤类。
1. ⽂本⽂件
⽂本⽂件存储的是普通“字符”⽂本,python默认为 unicode 字符集(两个字节表⽰⼀个字符,最多可以表⽰:65536 个),可以使⽤记事本程序打开。但是,像 word 软件
编辑的⽂档不是⽂本⽂件。
2. ⼆进制⽂件
⼆进制⽂件把数据内容⽤“字节”进⾏存储,⽆法⽤记事本打开。必须使⽤专⽤的软件解码。常见的有:MP4视频⽂件、MP3 ⾳频⽂件、JPG 图⽚、doc ⽂档等等。
⽂件操作相关模块概述
Python标准库中,如下是⽂件操作相关的模块
创建⽂件对象open()
open()函数⽤于创建⽂件对象,基本语法格式如下:
open(⽂件名[,打开⽅式])
groupbox是什么控件如果只是⽂件名,代表在当前⽬录下的⽂件。⽂件名可以录⼊全路径,⽐如:D:\。为了减少“\”的输⼊,可以使⽤原始字符串:r“d:\b.txt”。⽰例如下:
f = open(r"d:\b.txt",“w”)
打开⽅式有如下⼏种:
⽂本⽂件对象和⼆进制⽂件对象的创建:
如果我们没有增加模式“b”,则默认创建的是⽂本⽂件对象,处理的基本单元是“字符”。如果是⼆进制模式“b”,则创建的是⼆进制⽂件对象,处理的基本单元是“字节”。
⽂本⽂件的写⼊
基本的⽂件写⼊操作
⽂本⽂件的写⼊⼀般就是三个步骤:
1. 创建⽂件对象
2. 写⼊数据
3. 关闭⽂件对象
常⽤编码介绍
在操作⽂本⽂件时,经常会操作中⽂,这时候就经常会碰到乱码问题。为了让⼤家有能⼒解决中⽂乱码问题,这⾥简单介绍⼀下各种编码之间的关系。
常⽤编码之间的关系如下:
ASCII
全称为 American Standard Code for Information Interchange,美国信
息交换标准代码,这是世界上最早最通⽤的单字节编码系统,主要⽤来显⽰现代
英语及其他西欧语⾔。
ASCII码⽤7位表⽰,只能表⽰128个字符。只定义了27=128个字符,⽤
7bit即可完全编码,⽽⼀字节8bit的容量是256,所以⼀字节ASCII的编码最
⾼位总是0。
0~31表⽰控制字符如回车、退格、删除等;32~126表⽰打印字符即可以
通过键盘输⼊并且能显⽰出来的字符;其中48~57为0到9⼗个阿拉伯数字,
65~90为26个⼤写英⽂字母,97~122号为26个⼩写英⽂字母,其余为⼀
些标点符号、运算符号等,具体可以参考ASCII标准表
ISO8859-1
ISO-8859-1 ⼜称 Latin-1,是⼀个 8 位单字节字符集,它把 ASCII 的最⾼
位也利⽤起来,并兼容了ASCII,新增的空间是128,但它并没有完全⽤完。python基础知识测试
在ASCII编码之上⼜增加了西欧语⾔、希腊语、泰语、阿拉伯语、希伯来语
对应的⽂字符号,它是向下兼容ASCII编码
GB2312,GBK,GB18030
GB2312
GB2312全称为信息交换⽤汉字编码字符集,是中国于1980年发布,主要⽤于计算机系统中的汉字处理。GB2312主要收录了6763个汉字、 682个符号。
GB2312覆盖了汉字的⼤部分使⽤率,但不能处理像古汉语等特殊的罕⽤字,
所以后来出现了像GBK、GB18030这种编码。
GB2312完全兼容ISO8859-1。
GBK
c语言程序设计试卷全称为Chinese Internal Code Specification,即汉字内码扩展规范,于1995 年制定。
它主要是扩展了GB2312,在它的基础上⼜加了更多的汉字,它⼀共收录了21003 个汉字
GB18030
现在最新的内码字集于 2000 年发布,并于 2001 年强制执⾏,包含了中国⼤部分少数
民族的语⾔字符,收录汉字数超过70000余个。
它主要采⽤单字节、双字节、四字节对字符编码,它是向下兼容 GB2312 和GBK的,
虽然是我国的强制使⽤标准,但在实际⽣产中很少⽤到,⽤得最多的反⽽是 GBK和GB2312
Unicode
Unicode编码设计成了固定两个字节,所有的字符都⽤16位(2^16=65536)
表⽰,包括之前只占 8位的英⽂字符等,所以会造成空间的浪费,UNICODE 在
很长的⼀段时间内都没有得到推⼴应⽤。
Unicode完全重新设计,不兼容iso8859-1,也不兼容任何其他编码。
UTF-8
对于英⽂字母,unicode也需要两个字节来表⽰。所以unicode不便
于传输和存储。因此⽽产⽣了UTF编码,UTF-8全称是(8-bit Unicode
我要自学网无限v币破解版
Transformation Format)。
UTF编码兼容iso8859-1编码,同时也可以⽤来表⽰所有语⾔的字符,
under怎么说
不过,UTF编码是不定长编码,每⼀个字符的长度从1-4个字节不等。其中,
英⽂字母都是⽤⼀个字节表⽰,⽽汉字使⽤三个字节。
⼀般项⽬都会使⽤UTF-8。unicode中虽然汉字是两个字节,
UTF-8 中汉字是 3 个字节。但是互联⽹中⼀个⽹页也包含了⼤量的英⽂字母,
这些英⽂字母只占⽤1个字节,整体占⽤空间,UTF-8仍然优于Unicode。
中⽂乱码问题
windows 操作系统默认的编码是 GBK,Linux操作系统默认的编码是 UTF-8。当⽤open()时,调⽤的是操作系统打开的⽂件,默认的编码是 GBK。
在⽂件编辑区单击右键,选择FileEncoding,选择 GBK即可,再选择Reload,⽂件即显⽰正常。
write()/writelines()写⼊数据
write(a):把字符串a写⼊到⽂件中
writelines(b):把字符串列表写⼊⽂件中,不添加换⾏符
close()关闭⽂件流
由于⽂件底层是由操作系统控制,所以打开的⽂件对象必须显式调⽤close()⽅法
关闭⽂件对象。当调⽤close()⽅法时,⾸先会把缓冲区数据写⼊⽂件(也可以直接调⽤flush()⽅法),再关闭⽂件,释放⽂件对象。
为了确保打开的⽂件对象正常关闭,⼀般结合异常机制的 finally或者with 关键字实现⽆论何种情况都能关闭打开的⽂件对象。
with语句(上下⽂管理器)
with关键字(上下⽂管理器)可以⾃动管理上下⽂资源,不论什么原因跳出with 块,都能确保⽂件正确的关闭,并且可以在代码块执⾏完毕后⾃动还原进⼊该代码块时的现场。
⽂本⽂件的读取
⽂件的读取⼀般使⽤如下三个⽅法:
1. read([size])
从⽂件中读取 size 个字符,并作为结果返回。如果没有 size 参数,则读取整个⽂件。
读取到⽂件末尾,会返回空字符串。
2. readline()
读取⼀⾏内容作为结果返回。读取到⽂件末尾,会返回空字符串。
3. readlines()
⽂本⽂件中,每⼀⾏作为⼀个字符串存⼊列表中,返回该列表
#为⽂本⽂件每⼀⾏的末尾增加⾏号
with open("e.txt","r",encoding="utf-8")as f:
lines = f.readlines()
lines =[ line.rstrip()+" #"+str(index+1)+"\n"for index,line in
enumerate(lines)]
#推导式⽣成列表
with open("e.txt","w",encoding="utf-8")as f:
f.writelines(lines)
⼆进制⽂件的读取和写⼊
⼆进制⽂件的处理流程和⽂本⽂件流程⼀致。⾸先还是要创建⽂件对象,不过,需要指定⼆进制模式,从⽽创建出⼆进制⽂件对象。
f = open(r"d:\a.txt", ‘wb’) #可写的、重写模式的⼆进制⽂件对象
f = open(r"d:\a.txt", ‘ab’) #可写的、追加模式的⼆进制⽂件对象
f = open(r"d:\a.txt", ‘rb’) #可读的⼆进制⽂件对象
创建好⼆进制⽂件对象后,仍然可以使⽤ write()、read()实现⽂件的读写操作。
⽂件对象的常⽤属性和⽅法
⽂件对象封装了⽂件相关的操作。
⽂件对象的属性
split up和split
⽂件对象的打开模式
⽂件对象的常⽤⽅法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。