普通文件的读写

文件读取

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())
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页