python 学习 --- 文件操作

文件操作
1.open() 
    file(文件), 
    mode='r'(操作模式), 
    buffering=None(缓存策略), 
    encoding=None(编码方式), 
    errors=None(错误处理方式), 
    newline=None(设置换行控制符), 
    closefd=True(关闭描述文件)

2.文件操作方法
    file = open(file="test_demo",mode="r",encoding="UTF-8")
    读取文件所有的内容 s = file.read()
    读取第一行数据 s = file.readline()
    读取多行数据 s = file.readlines()  存在list里面,会读取到换行符(\n)
    处理中文 encoding="UTF-8"
    关闭文件 file.close() 或者
3.with语法
    # 读文件
    with open(file="test_demo", mode="r", encoding="UTF-8") as file:
  
    # 写文件
    with open(file="test_demo", mode="w", encoding="UTF-8") as file:
        s = file.write("成果来自坚持,执着创造奇迹!")
  
4.操作模式
    r: 读 文件要存在,如果不存在就会报错
    w: 写(覆盖) 文件要存在,如果不存在会自动创建
    a: 写(追加) 文件要存在,如果不存在会自动创建
    r+:支持读写(覆盖写)
    w+: 支持读写(覆盖写)
    a+: 支持读写(追加写)
    rb:以二进制的方式读文件
    wb:以二进制的方式覆盖写
    ab:以二进制的方式追加写
  
5.写多个数据
    import time
    data = ["test1","test2","test3"]
    with open(file="demo.txt",mode="a",encoding="utf-8") as f:
        time.sleep(1)
        f.writelines(data)
        f.flush() #手动保存
  
6.光标操作(不要一边写一边读)
    f.seek(0,0)
    offset: 偏移量  0
    whence=0: 取值的位置  0文件开头位置,1从光标所在位置开始, 2从文件末尾开始
    import time
    data = ["test1","test2","test3"]
    with open(file="demo.txt",mode="a+",encoding="utf-8") as f:
        time.sleep(1)
        f.writelines(data)
        f.flush() #手动保存
    #把光标设置到最前面去
    f.seek(0,0)
    res = f.read()
    print("打印数据:",res)
  
7.上下文管理协议
#类中实现__enter__(self),__exit__()方法就实现了上下文管理协议
class Demo:
    def __enter__(self):
        print("执行test_01之前执行的方法")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("执行test_01之后执行的方法")
        print("退出的时候做的事情")

    def test_01(self):
        print("干活")

if __name__ == '__main__':
    with Demo() as f:
        f.test_01()
回帖
请输入回帖内容 ...