Python的学习⼼得和知识总结(九)Python⽂件操作及IO处理
⼀个完整的程序都是包括 数据的读取和存储,在实际开发中 经常性的需要从外存(硬盘、光盘和U盘等)⾥⾯读取数据,或者将程序执⾏过程中产⽣的中间数据存放在⽂件(⽇志等),以及将运算结果进⾏持久化保存等。这些过程都离不开与⽂件打交道!
⽂章⽬录
⽂本⽂件和⼆进制⽂件
根据⽂件中数据的组织形式,可以把⽂件分为⽂本⽂件和⼆进制⽂件:
⽂本⽂件:存储的是普通的 “字符”⽂本,默认的字符集为Unicode(2字节表⽰⼀个字符 65536种)。如下:(我们使⽤notepad 或者记事本写的⽂件,下⾯我们可以看到它的字符集是utf-8)
⼆进制⽂件:数据内容⽤“字节”来存储的,需要使⽤专门的格式软件来解码打开。如:mp3⾳频、mp4视频以及doc⽂档等(否则乱码)
Python⽂件操作的模块
在Python的标准库⾥⾯,有⼀些与⽂件操作相关的模块 如下是简要的描述:
模块名称简要说明
I/O模块⽂件流的输⼊输出操作
OS模块基于操作系统功能,包含⽂件操作
Glob模块查符合特定规则的⽂件路径名
Fnmatch模块使⽤模式来匹配⽂件路径名
Filecmp模块⽤于⽂件的⽐较
模块名称简要说明
Cvs模块使⽤于csv⽂件的处理
Pickle和cPickle模块⽤于序列化和反序列化处理
xml包⽤于xml数据处理
bz2、gzip、zipfile、zlib和tarfile⽤于处理压缩和解压缩⽂件(分别对应于不同的算法)
Python⽂件操作的⽅法
创建⽂件对象open()
在Python⾥⾯⼀切皆对象,open()创建出来的也是⼀个⽂件对象。其语法格式如下:
open(filename[,打开⽅式])
若是只是⽂件名,则代表当前⽬录下⾯的⽂件。(⽂件名可以使⽤绝对路径来指定)我们都知道在输⼊⼀个⽂件路径的时候,会使⽤到⼤量的 \ 。(这玩意⼉在字符串⾥⾯整不好成了转义字符)因此为了减少 \的⼤量使⽤,我们使⽤原始字符串(就是路径的前⾯加上⼀个r)⽰例如下:
f=open(r"E:\Tsinghua_University\Python_Study\myexception3\venv\test.py","a")
⽂件的打开⽅式有下⾯⼏种:
⽂件模式详细描述
r read
w write(⽂件不存在则创建;存在则重写新内容)
a append (⽂件不存在则创建;存在则追加写新内容)
b⼆进制模式(可以与其他模式组合使⽤)
+读写模式(可以与其他模式组合使⽤)
上⾯的⽂本⽂件和⼆进制⽂件对象的创建:若是没有使⽤ b模式,则默认为创建⽂本⽂件对象(处理的基本单元是 字符);否则为⼆进制⽂件对象(处理的基本单元是 字节)
⽂本⽂件的写⼊处理
⽂件⽂件的写⼊操作三部曲:
1. 创建⽂件对象
2. 数据写⼊
3. 关闭这个⽂件对象(关闭解释器和OS打开的⼀些资源)
通常写⼊数据的时候有两个⽅法:write()和writelines()
fp=open(","a",encoding="utf-8")
str1="Tsinghua\nUniversity\n"
str2="清华\n⼤学\n"
fp.write(str1)
fp.write(str2)
fp.close()
#write()是把字符串写⼊到⽂件⾥⾯(若是多⾏,则需要换⾏符 \n)。它是不能够写⼊⼀个列表的,
#否则:TypeError: write() argument must be str, not list
python怎么读取文件中的数据⽽writelines()是⽀持写⼀个字符串列表到⼀个⽂件⾥⾯:
# coding=utf-8
fp=open(","a",encoding="utf-8")
str1="Tsinghua\nUniversity\n"
strlist=["清华","⼤学\n","浙江","⼤学"]
fp.write(str1)
fp.writelines(strlist)
fp.close()
但是需要注意的是:writelines()函数在写⼊列表的时候,没有⾃动添加换⾏符(需要我们⾃⼰加)。⽂件编码及乱码解决
下⾯我们来看⼀个简单的例⼦:
fp=open(","a")
str1="Tsinghua\nUniversity\n"
str2="清华\n⼤学\n"
fp.write(str1)
fp.write(str2)
fp.close()
执⾏之后的结果如下:
我们的中⽂没有打印出来,显⽰却是乱码!
接下来我们稍微简单的介绍⼀下在计算机世界⾥⾯的⼏种字符集和编码:
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的⼀套电脑编码系统,主要⽤于显⽰现代英语和其他西欧语⾔。它是现今最通⽤的单字节编码系统,并等同于国际标准ISO/IEC 646。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论