Python 文件读写的问题
Python中的文件读写相对其它语言来说,是比较简单的,如果我没有记错,java中的文件读取是比较繁琐的一件事情,Python中的读写操作是由其内置函数open()或者with 语法来完成,其中的难点在于open()函数所使用的形参比较多并且记忆较难,分别是 r,w,w,r+,w+,a+,*b 这几个参数,下面讲解这几个参数的含义以及使用场景,并通过代码来演示:
r:只读模式,并检查文件是否存在,如果文件不存在,报错。
w:写入模式,不检查文件是否存在,如果原文件有内容,覆盖所有内容,理解成全新模式即可。
a:写入模式,不检查文件是否存在,如果原文件有内容,文件末尾添加内容
r+:可读可写,并检查文件是否存在,如果文件不存在,报错,写会全部覆盖
w+:可读可写,不检查文件是否存在,全部覆盖
a+:可读可写,不检查文件是否存在,如果原文件有内容,文件末尾添加内容
*b:*代表rw中的任意一个,即rb,wb,其意义为将文件作为二进制读写,也就是io流,即使文件是编码非二进制,也转换成二进制读写。
file=open('e:\\www.txt','r')
content=file.read()
file.close()
print(content)
===================================================================================
#文件是存在的一个文件,并且文件内是有内容的,首先使用open()方法打开文件,然后使用read()方法读取#内容,并不对内容做任何#修改
file=open('e:\\www.txt','w')
content=file.read()
file.close()
print(content)
=====================================================================================
#运行报错,并且文件内容清空了,手动添加内容,后续看看,不能读,可以写
file=open('e:\\www.txt','a')
content=file.read()
file.close()
print(content)
=================================================================
#运行报错,并且文件内容清空了,再次手动添加内容,后续看看,不能读,可以写
file=open('e:\\www.txt','r+')
content=file.write('22222')
content=file.read()
file.close()
print(content)
==========================================================================
#参数r+正常读取,可读可写
file=open('e:\\wwwddd','w+')
file.write('22222111')
content=file.read()
file.close()
print(content)
=============================================================================
#打开一个不存在的文件,发现文件生成了,并且读写都正常,同样,a+也是一样,只是如果有写操作,
#原内容并不会被清空
file=open('e:\\wwwddd','rb')
#file.write('22222111')
content=file.read()
file.close()
print(content)
===========================================================================
#可以打开读,但内容清空
file=open('e:\\wwwddd','wb')
file.write('22222111')
#content=file.read()
file.close()
#print(content)
===============================================================================
#不能写,也不能读,因为是文本,并不是二进制文件,如果是二进制文件,可以写入内容。
总结,如果是使用Python做服务器运维,慎重使用rw,尽量使用r+和w+,a+以及a,因为如果是读取配置文件,然后又有什么写入操作,rw很可能会毁了配置文件,不可逆的哦,r+和w+也会清空原有内容,因此比较适合服务器运维日志的添加和修改,以及添加配置文件,因为配置文件对写入位置可能会有要求,但使用a和a+可能会更好些,rb,wb一般是在Python的爬虫等数据的处理操作中使用,如果,常规的读取并不能正常进行的话,使用二进制读写的rb,wb会好些。
结论:r,w,对不太重要的文件按需使用即可。
r+,w+,各类运维配置文件的读写,但需谨慎,服务日志的操作。
a+:以上都适用,但对写入位置有要求的除外。
rb,wb,爬虫的等等python获取到的数据可能需要进一步处理的需求时适用。