0
点赞
收藏
分享

微信扫一扫

网络编程(part3)--文件读写之二进制文件读写/with操作

鄙人学习笔记


文章目录

  • ​​二进制文件读写​​
  • ​​举个例子1(以二进制方式打开并读取txt文件)​​
  • ​​举个例子2(以二进制方式打开并读取图片)​​
  • ​​举个例子3(二进制文件打开并写入操作)​​
  • ​​关闭文件​​
  • ​​with操作​​
  • ​​with语句的语法格式​​
  • ​​举个例子​​

二进制文件读写

file_object = open(file_name, access_mode='r', buffering=-1)
功能:打开一个文件,返回一个文件对象。
参数:file_name————文件名;
access_mode————打开文件的方式,如果不写默认为‘r’
文件模式 操作
rb 以二进制读模式打开 同r
wb 以二进制写模式打开 同w
ab 以二进制追加模式打开 同a
rb+ 以二进制读写模式打开 同r+
wb+ 以二进制读写模式打开 同w+
ab+ 以二进制读写模式打开 同a+

举个例子1(以二进制方式打开并读取txt文件)

首先看一下要读取的文件数据:
网络编程(part3)--文件读写之二进制文件读写/with操作_二进制文件

读取:
网络编程(part3)--文件读写之二进制文件读写/with操作_with_02

结果:
网络编程(part3)--文件读写之二进制文件读写/with操作_打开方式_03

由结果可知,我们得到了一堆字节串。
在网络传输的过程中,要求不能传输字符串,只能传输字节串,则可以用这种方式进行去读取。

我们可以用decode()将字节串转换成字符串:
网络编程(part3)--文件读写之二进制文件读写/with操作_with_04

结果:
网络编程(part3)--文件读写之二进制文件读写/with操作_文件读写_05

举个例子2(以二进制方式打开并读取图片)

我们先看一下我们的图片:
网络编程(part3)--文件读写之二进制文件读写/with操作_文件读写_06

我们以r的形式打开文件:
网络编程(part3)--文件读写之二进制文件读写/with操作_二进制文件_07

结果:
网络编程(part3)--文件读写之二进制文件读写/with操作_python_08

会报错!所以,我们如果要打开二进制编码的文件(视频、音频),必须要以二进制的打开方式(字节串的打开方式)。
备注:二进制的方式(字节串的打开方式)可以打开所有文件。

我们以rb的形式打开:
网络编程(part3)--文件读写之二进制文件读写/with操作_打开方式_09

部分结果:
网络编程(part3)--文件读写之二进制文件读写/with操作_python_10

举个例子3(二进制文件打开并写入操作)

写入:
网络编程(part3)--文件读写之二进制文件读写/with操作_打开方式_11

备注:我们以wb的形式打开文件,则必须要以字节串的形式写入,故我们要在字符串【hello world】前加【b】,将其转化为字节串。

结果:
网络编程(part3)--文件读写之二进制文件读写/with操作_with_12

关闭文件

file_object.close()

打开一个文件后我们就可以通过文件对象对文件进行操作了,当操作结束后使用close()关闭这个对象可以防止一些误操作,也可以节省资源。

with操作

python中的with语句使用于对资源进行访问的场合,保证不管处理过程中是否发生错误或者异常都会执行规定的“清理”操作,释放被访问的资源。比如,文件读写后自动关闭、线程中锁的自动获取和释放等。

with语句的语法格式

with context_expression [as target(s)]:
with-body

备注:context_expression为条件语句,as target(s) 表示将条件语句生成一个target(s)对象,with-body为语句块。在执行完语句块后,生成的对象会被自动清理。

通过with方法可以不用close(),因为with生成的对象在语句块结束后会自动处理,所以也就不需要close了,但是这个文件对象只能在with语句块内使用:

with open('file','r+') as f:
f.read()

上面这段代码的意思是,将打开的文件对象定义为f, 之后用f进行读取操作,当语句块结束后,会自动清除文件对象f.

备注:并不是所有对象都能用with.

举个例子

代码:
网络编程(part3)--文件读写之二进制文件读写/with操作_打开方式_13

结果:
网络编程(part3)--文件读写之二进制文件读写/with操作_with_14

举报

相关推荐

0 条评论