失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python的文件操作 open with open

Python的文件操作 open with open

时间:2019-01-06 06:02:19

相关推荐

Python的文件操作 open with open

目录

1、什么是文件

2、两种重要的文件类型

2.1 文本文件的优缺点

2.2 二进制文件的优缺点

2.3 转换

3、文件的缓冲机制

3.1文件缓冲区

3.2缓冲机制的好处

4、文件基本操作

4.1 打开文件(open)

4.2.1 mode: 指定打开的文件方式 (str)=>text,bytes

4.3.1buffering:指定缓存方式(int)

4.4.1encoding: 文件的编码方式( str)

​编辑4.5.1 小练习

4.2 关闭文件-用with语句打开(with open)

4.2.1读取文件内容

4.2.2 小练习

4.2.3文件对象其他方法

1、什么是文件

文件是存放在外部介质 (如硬盘、U盘) 上的一组完整信息的集合。这些信息可为各种文字、 图形、图像、电影、音乐,甚至包括病毒程序等。

2、两种重要的文件类型

文本文件(Text File):文本文件是可直接阅读的,使用记事本打开即可看到文件的内容。

二进制文件(Binary File):这类文件将数据按照它的进制编码的形式存储。如BMP。由 于这类文件内容是二进制编码,使用记事本打开是显然是乱码,BMP可用图片查看器解码。

2.1 文本文件的优缺点

优点:

输出内容友好,不需要手动转换。

缺点:

一个字符占一个字节,文件占用的存储空间较多,读写时需要转换(内存->显示), 访问的时效率不高 。

2.2 二进制文件的优缺点

优点:

二进制文件中的数据与数据的内存中的 表现形式一致。二进制文件在存储数据 时非常紧凑,占用存储空间较少;在读 写时不需要进行转换,具有较高的时间效率。

缺点:

二进制文件无法直接以字符形式输出,必须 要经过一个转换过程。

2.3 转换

bytes 转换:

bytes->str : decode('utf8')

str 转换:

str->bytes: encode('utf8')

encode编码时可指定任何合适的编码方式,但decode解码时,一定需要对应的编码方式。

3、文件的缓冲机制

读操作:不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据。

写操作:不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数 据写入磁盘。

3.1文件缓冲区

计算机系统为要处理的文件在内存中单独开辟出来的一个存储区间,在读写该文件时,做为数据交换的 临时“存储中转站” 。

3.2缓冲机制的好处

能够有效地减少对外部设备的频繁访问,减少内存与外设间的数据交换,填补内、外设备的速度差异, 提高数据读写的效率。

4、文件基本操作

4.1 打开文件(open)

file : 要打开的文件名( str ) mode: 打开文件的方式( str ) => text, bytes encoding: 文件编码方式(str) errors: 当发生编码错误时的处理方式(str) --- 'ignore'或'strict'(默认) buffering: 缓存方式 ( int)

>>> fd = open("gbk.txt",encoding="gbk")>>> fd.read()'你好,你好\n'>>> fd = open("gbk.txt",'w',encoding="gbk")>>> fd.write("这还是你")4>>> fd.flush()

4.2.1 mode: 指定打开的文件方式 (str)=>text,bytes

>>> fp = open("hyrz2.txt", 'ab')>>> fp.write(b"ddd\n")4>>> fp.flush()

4.3.1buffering:指定缓存方式(int)

0 实时写入,只能二进制模式时1 行缓存,只能文本模式时n 设置缓冲区大小为n*4096字节,溢出后追加到文件中

4.4.1encoding: 文件的编码方式( str)

常见编码:

4.5.1 小练习

从网络上去下载图片保存到本地。

import requestsurl = "/uploads/0713j/818.jpg"imr = requests.get(url)imr2 = imr.contentwith open("图片.jpg","wb") as img:img.write(imr2)

4.2 关闭文件-用with语句打开(with open)

with open 相较于open,with open 用完时打开的文件会被自动回收。with语句块的代码执行完成之后,会自动关闭资源,回收资源--fp.close(),自动调用close。

4.2.1读取文件内容

>>> fp.read()'qdqd\n'>>> fp.read()''>>> fp.seek(0)0>>> fp.read()'wewew\nqdqd\n'>>> fp.seek(1)1>>> fp.read()'ewew\nqdqd\n'>>>

fp.seek(cookie, whence=0),cookie---偏移量 以字节为单位,whence-- 相对位置 0相对于当开始 1相对于当前 2--》末尾,末尾还有一个换行符。

>>> fp.read()'qdqd\n'>>> fp.read()''>>> 第二次读不到东西

fp.read()每次读写从光标的位置往后读写后(str)。

4.2.2 小练习

准备一个example.txt文件,里面随便写入些内容(如一首歌词)。

# 读前5行。# 读全文# 读取最后12字节=> str格式# 读取最后4个汉字=> str格式with open('example.txt', encoding='utf-8')as f:# 读前五行print("前五行".center(20,"-"))for i in range(5):print(f.readline().strip())# 读全文print("全文".center(20, "-"))f.seek(0)k = f.read()print(k)print("-".center(20, "-"))with open("example.txt",'br')as r:#读取最后12字节print("最后12字节:",r.read(r.seek(-12, 2)).decode("utf-8") )# 最后4个汉字(一个汉字等于三字节,最后四个汉字,取最后12字节)print("最后4个汉字:", r.read(r.seek(-12, 2)).decode("utf-8"))

4.2.3文件对象其他方法

如果觉得《Python的文件操作 open with open》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。