一、文本文件和二进制文件
1、文本文件
文本文件存储的是普通“字符文本”,默认为unicode字符集(两个字节表示一个字符,65536),可以使用记事本程序打开。但是,像word软件编辑的文档不是文本文件。
2、二进制文件
二进制文件把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件解码。常见的有:mp3视频文件,MP3音频文件,jpg图片,doc文档等等。
二、文件 *** 作相关模块概述
IO模块,文件流的输入和输出 *** 作
OS模块,基本 *** 作系统功能,包括文件 *** 作
glob模块,查找符合特定规则的文件路径名
fnmatch模块,使用模式来匹配文件路径名
fileinput模块,处理多个输入文件
filecmp模块,用于文件的比较
csv模块,用于csv文件处理
pickle和cpickle,用于序列化和反序列化
xml报,用于xml数据处理。
bz2、gzip、zipfile、zlib、tarfile用于处理压缩和解压(分别对应不同的算法)
三、创建文件对象open()
语法 open(文件名[,打开方式])
f = open(r"d:b.txt",'a')
r 读模式
w写模式,如果文件不存在则创建,存在则重新写内容。
a追加模式,文件不存在则创建,存在就在文件末尾追加内容。
b二进制模式(可与其他模式组合使用)
+读、写模式(可与其他模式组合使用)
文本文件对象和二进制对象的创建:
如果我们没有增加模式“b”,则默认创建的是文本文件对象,处理的基本单元是“字符”。
如果是二进制模式“b”,则创建的是二进制文件对象,处理的基本单元是“字节”。
四、文本文件的写入
基本文件的写入 *** 作
文本文件的写入一般就是三个步骤:
1、创建文件对象
2、写入数据
3、关闭文件对象
f = open("a.txt",'a')
s = "尚学堂n 百战程序员n"
f.write()
f.close()
五、常用编码介绍
ASCII———ISO8859-1
GB2312 UTF-8
7位表示1个字符,最高位
GB2312和UTF-8不兼容
六、写 *** 作
write()/writelines()
write(a):把字符串a写入到文件中
writelines(a):把字符串列表写入文件中,不添加换行符
f = open(r"d:bb.txt,"w",encoding="utf-8")
s = ["高琪n","高老三n","高老四n"]
f.writelines(s)
f.close()
七、close()关闭文件流
由于文件底层是由 *** 作系统控制,所以我们打开的对象必须显式调用close()方法关闭文件对象。当调用close()方法时,首先会把缓冲区数据写入文件(也可以直接调用flush()方法),再关闭文件,释放文件对象。
为了确保打开的文件对象正常关闭,一般结合异常机制的finally或者with关键字实现,无论何种情况都能关闭打开的文件对象。
try:
f = open(r"my01.txt:,"a")
str="gaoqi"
f.write(str)
finally:
f.close()
flush把数据从缓冲区写入硬盘
八、with语句(上下文管理器)
with关键字(上下文管理器)可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,并且可以在代码块执行完毕后自动还原进入该代码块是的现场。
s = ["高琪n","高老三n","高老五n"]
with open(r"d:bb.txt",'w') as f:
f.writelines(s)
九、文件的读取
1、read([size])
从文件中读取size个字符,并作为结果返回。如果没有size参数,则读取整个文件。读取到文件末尾,会返回空字符串。
2、readline()
读取一行内容作为结果返回。独缺到文件末尾,会返回空字符串。
3、readlines()
文本文件中,每一行作为一个字符串存入列表中,返回该列表。
读取一个文件前4个字符
with open(r"bb","r",encoding = "ufg-8") as f:
print(f.read(4))
文件较小,一次将文件内容读入到程序中
with open(r"d:bb.txt","r")
print(f.read())
按行读取一个文件
with open(r"bb","r") as f:
while True:
fragment = f.readline()
if not fragment:
break
九、二进制文件的读取和写入
f = open(r"d:a.txt",'wb') 可写的、重写模式的二进制文件对象
f = open(r"d:a.txt",'ab') 可写的、追加模式的二进制对象
f = open(r"d:a.txt","rb") 可读的二进制文件对象
十、文件对象常用方法和属性总结
flush()把缓冲区的内容写入文件,但不关闭文件
seek(offset[,whence]) 把文件指针移动到新的位置,offset表示相对于whence的位置
offset:
off为正往结束方向移动,为负往开始方向移动
whence不同的值代表不同含义
0:从文件头开始计算(默认值)
1:从当前位置开始计算
2:从文件尾开始计算
tell()返回文件指针的当前位置
truncate([size])不论指针在什么位置,只留下指针前size个字节的内容,其余全部删除。
十、使用pickle序列化
使用语法:
pickle.dump(obj,file) obj就是要被序列化的对象,file指的是存储的文件
pickle.load(file) 从file读取数据,反序列化成对象
十一、OS和OS.path模块
os.system可以调用windows系统的记事本程序
十二、OS模块文件和目录 *** 作
remove(path)删除指定的文件
rename(src,dest)重命名文件或目录
stat(path) 返回文件的所有属性
listdir(path)返回path目录下的文件和目录列表
mkdir(path)创建目录
makedirs(path1/path2/path3/....)创建多级目录
remdir(path)删除目录
removedirs(path1/path2..)删除多级目录
getcwd()返回当前工作目录
chdir(path)把path设为当前工作
walk()遍历目录树
sep当前 *** 作系统所使用的路径分隔符
十三、Os.path模块
os.path模块提供了目录相关(路径判断、路径切分、路径链接、文件夹遍历)
isabs(path)判断path是否绝对路径
isdir(path)判断path是否为目录
isfile(path)判断path是否为文件
exists(path)判断指定路径的文件是否存在
getsize(filename)返回文件的大小
abspath(path)返回绝对路径
dirname(p)返回目录的路径
getatime(filename)返回文件的大小
abspath(path)返回绝对路径
dirname(p)返回目录的路径
getatime(filename)返回文件的最后访问时间
getmtime(filename)返回文件的最后修改时间
walk(top,func,arg)递归方式遍历目录
join(path,*paths)连接多个path
split(path0对路径进行分割,以列表形式返回
splitext(path)从路径中分割文件的扩展名
十四、walk()递归遍历所有文件和目录
os.walk()方法:
返回一个3个元素的元组,(dirpath,dirnames,filenames),
dirpath:要列出指定目录的路径
dirnames:目录下的所有文件夹
filenames:目录下的所有文件
十五、shutil模块(拷贝和压缩)
shutil模块时python标准库中提供的,只要用来做文件和文件夹的拷贝、移动、删除等;还可以做文件和文件夹的压缩、解压缩 *** 作。
os模块提供了对目录或文件的一般 *** 作。shutil模块作为补充,提供了移动、复制、压缩、解压等 *** 作,这些os模块都没有提供。
十六、递归算法
定义递归头。什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
递归体。什么时候需要调用自身方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)