文件读取
1.打开文件
"""
open(path,flag,encoding)
path:需要打开的文件的路径,可以是相对路径,也可以是绝对路径
flag:表示文件打开的方式
r:只读,文件描述符出现在文件的开头
rb:read binary,以二进制的方式打开一个文件用于只读,文件描述符出现在 文件的开头
r+:读写,文件不存在会报异常
rb+:以二进制的方式打开一个文件用于读写
encoding:
utf-8/UTF-8/utf8
gbk/GBK
"""
# 注意1:如果只读,普通文本文件使用r打开即可,open函数返回被打开的文件对象【文件描述符】
# 注意2:encoding一定要和文件本身的编码格式保持一致,否则乱码
2.读取内容
"""
f.read(value),value省略,则默认读取文件中的全部内容,value表示字节数
f.readline(value):value省略,则默认一次只能读取一行,value表示字节数
f.readlines():以行为单位,返回一个列表,行作为列表中的元素
"""
3.关闭文件
关闭文件的过程实际上是将文件对象销毁的过程,为了避免造成系统资源的浪费
f.close()
文件写入
1.打开文件
open(path,flag,encoding)
path:需要打开的文件的路径,可以是相对路径,也可以是绝对路径
flag:表示文件打开的方式
w:普通文件文件的写入 *****
wb:read binary,二进制文件内容的写入 *****
w+:读写,文件不存在创建
wb+:以二进制的方式打开一个文件用于读写
a:append,表示追加 *****
encoding:
utf-8/UTF-8/utf8
gbk/GBK
注意:
使用w或者wb,新的内容会覆盖掉旧的内容
使用a,新的内容会追加到原内容的后面
"""
# 注意1:写入文件的时候,文件可以不存在,会自动创建
# 注意2:常用文件的编码格式为utf-8.s,如果encoding使用gbk,打开文件会出现乱码
2.写入内容
x.write(str),将指定字符串写入到指定文件中,返回被写入的字符串的长度
x.writelines(seq), 将序列中的字符串写入到指定文件中
# 注意writelines传参的时候,列表中的每个元素的后面添加\n
# f2.writelines(["fhajkfh\n","aaaaa\n","tquioetuqoiwu6578465\n"])
# with上下文写入
with open(r"file3.txt","w",encoding="utf-8") as x:
x.write("fahj")
x.flush() # 刷新:如果在数据量大的情况下,加快数据的写入速率
3.关闭文件
非文本文件读写
如果需要打开的是图片,音视频或者压缩包等,打开方式需要采用rb或者wb
如果采用rb或者wb的方式打开文件,则必须省略encoding参数
普通文本文件读取完成之后获取到的是一个字符串,二进制读取结果为一个字节
with管理上下文
"""
with上下文的工作原理:
with是管理上下文的关键字,也被称为上下文管理器,当一个对象使用with的时候,
当对象进入上下文的时候,会自动调用__enter__;
当对象退出上下文的时候,会自动调用__exit__;
as关键字:通过as关键字接收使用with关键字的对象,as后面的是一个变量【引用】
"""
class Check(object):
def __enter__(self):
# 当对象进入上下文环境时,主要是为了初始化相应的资源,如:打开文件
return self
def __exit__(self, exc_type, exc_val, exc_tb):
"""
exc :exception,异常【错误】
:param exc_type: 异常类型
:param exc_val: 异常值
:param exc_tb:
"""
return True #内部自己处理异常,不会向解释器抛出【raise】异常
# 读取文件
with open(r"","r",encoding="utf-8") as f:
print(f.read())