python中文件的读写与打开模式


什么是相对路径?
相对路径就是以当前文件为基准,到目标路径的这一段路,被称作为相对路径
一般以./代表当前路径
一般以. ./代表上一级路径
什么是绝对路径?
绝对路径就是以盘符开始到目标路径
比如C:/路径
代表c盘下面的路径
传统的python读取文件:

变量名 = open("相对路径或绝对路径","r")

但是可能会遇到文件不存在,抛出FileNotFoundError异常,为了防止程序崩溃,我们采用异常处理:

try:
    变量名 = open("相对路径或绝对路径", "r")
except:
    print("文件不存在")

虽然这个打开文件的程序看起来没问题,但是我们忽略了一个细节,当文件读取后,没有进行关闭,及时关闭文件这是一个好习惯。
解释:当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了,而with语句,会自动调用close()方法。所以,可以用close()函数来关闭文件,也可以采用with语句使代码更加简洁:
第一种方式:

try:
    变量名 = open("相对路径或绝对路径", "r")
except:
    print("文件不存在")
finally:
	变量名.close()

第二种方式:

with open('相对路径或绝对路径','r') as 变量名:

文件的打开模式

含义

‘r’

只读模式,如果文件不存在,返回异常FileNotFoundError,默认值

‘w’

覆盖写模式,文件不存在则创建,存在则完全覆盖

‘x’

创建写模式,文件不存在则创建,存在则返回异常FileExistsError

‘a’

追加写模式,文件不存在则创建,存在则在文件最后追加内容

‘b’

二进制文件模式

‘t’

文本文件模式,默认值

‘+’

与r/w/x/a 一同使用,在原功能基础上增加同时读写功能

可以进行随意组合(只列出部分):
“a” 以“追加”模式打开, (从 EOF 开始, 必要时创建新文件)
“a+” 以”读写”模式打开
“ab” 以”二进制 追加”模式打开
“ab+” 以”二进制 读写”模式打开

“w” 以”写”的方式打开
“w+” 以“读写”模式打开
“wb” 以“二进制 写”模式打开
“wb+” 以“二进制 读写”模式打开

“r+” 以”读写”模式打开
“rb” 以”二进制 读”模式打开
“rb+” 以”二进制 读写”模式打开
文件内容的读取方法:

函数名

含义

变量名.readall()

读取整个文件的内容,返回一个字符串或字节流

变量名.read(size)

从文件中读取整个文件的内容,可选参数size:读取前size长度的字符串或字节流

变量名.readline(size)

从文件中读取一行的内容,可选参数size:读取改行前size长度的字符串或字节流

变量名.readlines(hint)

从文件中读取所有行的内容,以每行为元素形成一个列表,可选参数hint:读取hint行

文件内容的写入方法:

方法

含义

变量名.write()

向文件写入一个字符串或字节流

变量名.writelines(lines)

将一个全为字符串的列表写入文件

变量名.seek(offset)

改变当前文件操作指针的位置,offset值:0-文件开头 1-当前位置 2-文件结尾