文件模式概念
#调用open函数时,如果只设定文件名,会获得一个可读取的文件对象,如要进行写入,需要参数mode设定为w,参数mode可以取多个值
#open默认采用r模式,即只读,实际上就是下面这样,只不过默认的文件模式不必写出来
file_txt=open("demo.txt","r")
#其他的文件模式还有’w’,‘x’,‘a’,‘b’,‘t’,’+'等
'w’是写入模式
#在写入模式下,原有内容将被删除并替换为你新输入的内容
#注意,如果不存在这个文件,将会自动创建一个,并写入你write的内容
file_txt=open("demo.txt","w")
file_txt.write("Hello,World")
file_txt.close() #关闭文件,后面会说为什么要这么做
file_txt=open("demo.txt")
print(file_txt.read())
#Hello,World
#可以看到,我在open中设定了w,也就是写入模式,下面还使用write执行写入,当我执行读取时,得知文件内容变为了我之前写入的内容
#虽然我觉得不必说明,但以防万一,说一下
#文件模式只是告诉python你打算怎么处理文件,而write或read才是写入或读取的行为
#你如果没有设定为写入模式,却使用write写入行为,就会报错
'x’是独占写入模式
#在文件已存在时引发FileExistsError异常
file_txt=open("demo.txt","x")
#FileExistsError: [Errno 17] File exists: 'demo.txt'
'a’是附加模式
#会在既有文件末尾继续写入
file_txt=open("demo.txt","a")
file_txt.write(" and Hello Python!!")
file_txt.close()
file_txt=open("demo.txt")
print(file_txt.read())
# Hello,World and Hello Python!!
'b’是二进制模式
#Python使用通用换行模式,下一节中将会讲到readlines等方法会识别所有换行符
#例如\n \r \r\n,如果要禁止自动转换,需要将参数中newline设为空,open(filename,newline="")
#newline="\n"时,只识别\n这个换行符
#使用b则会忽略所有自动转换,因为你的文件可能是音频或图片,读取时使用’rb’文件模式即可
't’是文本模式
#与其他模式结合使用,上一节说过的encoding就是设置编码格式的参数
#它可以自动转换换行字符,默认情况下\n是行的结尾,读取时自动替换其他行尾字符\r或\r\n,写入时将\n替换为系统默认的行尾字符os.linesep
#这里需要深入了解的请使用help(open)或网上自行查询
'+'是读写模式
#与其他模式一起使用,例如r+就是打开文本文件并进行读写