打开文件时模式字符的含义:
字符 | 含义 |
"r" | 以只读方式打开(默认) |
"w" | 以只写方式打开,若要打开的文件存在,则删除原文件内容。如果不存在,则创建该文件并以只写方式打开 |
"x" | 创建一个新文件,并以写模式打开这个文件,如果文件存在,则会产生“FileExistsError”错误 |
"a" | 以只写模式打开一个文件,如果要打开的文件存在,则要写入的内容追加到文件末尾 |
"b" | 用二进制模式打开文件 |
"t" | 文本模式打开文件(默认) |
"+" | 打开一个磁盘文件(可读可写),不能单独使用,要和其它模式字符结合使用 |
|
相关方法:
1、打开文件
open(filename,mode)
参数:filename,文件名,必选,字符串形式。mode,操作模式,可选,默认为 rt
作用:打开文件
返回值:返回一个文件流对象,文件流对象可以迭代。
文件流对象是可迭代对象,迭代过程中将以换行符'\n'作为分隔符
eg:f = open("123.txt")
注意:open方法打开文件,结束时一定要关闭 f.close()
f = open('phonenumber.txt')
for line in f:
print(line) # 打印每一行的数据
1.1 读取文件
s = f.read() #一次性全部读取,对文本文件返回的为字符串。二进制文件返回的是字节串。
s = f.readline() #读取一行,遇到 \n 就返回
s = f.readlines() # 返回每行字符串的列表,
返回的是一个列表,列表的每个元素是一行数据
for s in f:
print(s)
1.2写文件
f = open("123.txt","w") # w ,只写模式,只能写入文件,不能读取文件。
若文件不存在,则创建新的文件。
若文件存在,则写入的时候会覆盖原来文件里面的内容
f.write(str) 参数:要写入的内容,必选,且参数类型必须为字符串
作用:在文件写入内容
返回值:往文件里面写东西的时候,不需要返回值
返回的是写入的字符串长度,即写入的字符长度
注:对二进制文件需要用字节串操作
f.writelines(str) 参数:必选,参数的内容必需为字符串,比如 参数为列表、元组、集合、字典时,其元素的类型必需为字符串
为字典时,写入的是键
作用:将str写入文件
1.3关闭文件
f.close()
1.4 判断文件是否可读写
判断是否可读:d = f.readable() 返回True,可读。False,不可读
判断是否可写:w = f.writeable() 返回True,可写。返回False,不可写
1.5 f.tell()
作用:返回文件当前的读写位置,以字节计算
返回值:数字,代表当前的读写位置
1.6设置读写位置
f.seek(偏移量,whence=相对位置)
偏移量
大于0的数代表向文件末尾方向移动的字节数
小于0的数代表向文件头方向中移动的字节数
相对位置
0 代表从文件头开始偏移
1 代表从文件当前读写位置开始偏移
2 代表从文件尾开始偏移
2、标准输入输出
sys.stdin 标准输入文件
ctrl+d 输入文件结束符
sys.stdout 标准输出文件
sys.stderr 标准错误输出文件
模块名:sys
注:
标准文件不需要打开和关闭就可以使用
2.1 python中使用标准输出定向到具体文件
① 先open 目标文件
ff = open("/xx/xx/465.txt","a")
② 标准输出绑定目标文件流对象
sys.stdout = ff
如果不先把标准输出绑定目标文件流对象,直接使用sys.stdout.write("") = ff 的话,内容会直接在终端上显示,而不会定向输出到目标文件中。
③ 内容写入目标文件
【1】调用文件流对象的 write 方法 :
ff.write("要写入到465.txt的内容")
【2】直接使用print函数
print("要写入到465.txt的内容",file=ff)
④ 关闭文件
ff.close()