A

1、首先文件读写操作有以下几种模式:

  a\a+  w\w+ r\r+  

a模式:追加_写入模式,写入指针默认在开头,如果文件存在将在开头追加写入,如果文件不存在将创建文件再写入。

a+模式:追加_读写模式,可读可写,写入指针默认在末尾,如果文件存在将在末尾追加写入,如果文件不存在将创建文件再写入。

w模式:写模式,如果文件存在,把文件覆盖再写入,如果文件不存在将创建文件再写入。

w+模式:写读模式,可写可读,如果文件存在,把文件覆盖再写入,如果文件不存在将创建文件再写入。

r模式:读模式,如果文件存在,可读取文件数据,如果文件不存在读取将会报错。

r+模式:读写模式,可读可写,如果文件存在,可读取或写入文件数据,如果文件不存在读或写取将会报错。

 


 

 

2、而使用以上操作模式可以通过 open() 

a、以下是open()使用方式

1 a_file = open('文件路径','操作模式')

 


 

例: w模式  

a_file = open('testf.txt','w',encoding='utf-8') #这里传入的第一个参数是路径及文件名,第二个参数是文件操作模式,第三个参数是字符编码。
a_file.write('测试写入') #这里使用到 open()的内置函数 write() 通过这个函数可以往里面写入数据,注意:write()传入的是str()字符串。

上面例子,是在当前的目录下打开testf.txt文件并向这个文件里面写入“测试写入”,如果这个当前目录下这个文件不存,

那么将会创建一个文件并写入,如果当前目录已经存在,那么将会打入写入数据并覆盖之前文件。

 


 

 例:w+模式  

 

a_file = open('testf.txt','w+',encoding='utf-8')
a_file.write('我出现了')
a_file = open('testf.txt','w+',encoding='utf-8')
bf=a_file.read()
print(bf)

执行后结果:

>>>我出现了

通过上面例子,w+是可以写也可以读取文件数据。

 


 

例: r模式  与  r+模式 

a_file = open('testf.txt','r',encoding='utf-8')
af=a_file.read()
print(af)
>>>我出现了

a_file = open('testf.txt','r+',encoding='utf-8')
a_file.write('我又出现了')#这里直接使用了write写入,直接把‘我出现了’覆写了。在这之前可以,先读文件,之后再写文件,这样就可以在后面追加数据了。
bf=a_file.read()
print(bf)
>>>我又出现了

 


 

例: a模式  与  a+模式 

 

a_file = open('testf.txt','a',encoding='utf-8')
a_file.write('我出现了A')


a_file = open('testf1.txt','a+',encoding='utf-8')
a_file.write('创建一个新的文件了')
a_file.seek(0)#文件指针位置,因为a+模式后指针停在末尾,通过seek(0)可以把指针位置调到0位置就是文件的开头。
bf=a_file.read()#如没有上一句代码seek(0),这里将读不到文件

a_file.close()
print(bf)

>>>创建一个新的文件了

注意,a、a+ 在数据追加后,文件指针位置就停留在数据的尾端,如果没有seek(0),直接read()读取的话是读取不到数据的。

close() 在这里出现了,close()表示关闭文件句柄对象(这里a_file就是文件句柄对象),在每次文件操作完毕之后都要使用这个函数来闭。

 


 

3、with 上下管理理器

使用方式

with open('testw.txt','a+',encoding='utf-8') as f:#这里就直接通过with打开文件,as 是给打开的文件一个别名,这里别名为 f 相当于变量。
a_file.write('创建一个新的文件了')
a_file.seek(0)
bf=a_file.read()

print(bf)

>>>创建一个新的文件了

这里使用的with,每次操作完文件后就不需要close()来关闭文件句柄对象,with内部已经做了处理。

 


 

 

B


1、上面的文件操作方式,如果直接使用来读取图片文件时,将会报错,图片如果通文件方式来打看到是一堆的乱码,这是因为里面都是二进制数据

python 读取二进制文件,可以通过以下方式来读写。

 ab  rb  wb 

rb 以二进制读模式打开
wb 以二进制写模式打开
ab 以二进制追加模式打开
rb+ 以二进制读写模式打开
wb+ 以二进制读写模式打开
ab+ 以二进制读写模式打开

 

例:ab模式 

with open('123.png','rb') as f:
    a=f.read()
    print(a)

这里的操作方式以上述操作一样、