python第十节IO流的 *** 作

python第十节IO流的 *** 作,第1张

python第十节IO流的 *** 作

一、文本文件和二进制文件

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模块都没有提供。

十六、递归算法

      定义递归头。什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。

递归体。什么时候需要调用自身方法。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4655248.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存