• Python自娱—13.文件操作


    文件句柄

    f = open("文件绝对路径或相对路径", mode="r", encoding="utf-8")
    content = f.read()      # 这里进行了一个utf-8到gbk转换?
    print(content)
    f.close()
    
    # 如果文件隐藏了后缀,则不要添加后缀
    # 以什么编码方式存储的文件,就以什么编码方式打开
    # 非文字文件存储用bytes
    # read()对文件进行了转换, b转换成了str
    
    1.编码方式 utf-8 gbk
    2.mode:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b
        # r+会覆盖当前文件指针所偶在位置的字符,如原来文件内容是“hello”,打开后写入”hi“,会干掉he
          不移动光标,新内容读不出来;移动光标新内容能读出来
          在写之前能读旧内容
        # w+与r+不同,w+在打开文件时会将文件清空
          不移动光标,新内容读不出来;移动光标新内容能读出来
          在写之前读不到旧内容,已经被清空
        # a+与r+不同,a+只能写到文件末尾(无论当前文件指针在哪里).r+移动光标后就会覆盖写,a+就不会
          不移动光标,新内容读不出来;移动光标新内容能读出来
          在写之前读不到就内容,因为光标在最尾
    
    3.操作方式 只读 只写 追加 读写 写读
    4.open直接打开文件,如果出现异常,则报错,close方法无法关闭
    5.用with的好处是达到语句末尾时,会自动关闭文件,即便出现异常.
    6.with语句实际上是一个非常通用的结构,使用上下文管理器.支持__enter__和__exit__方法
    7.__enter__方法不接受任何参数,在进入with语句时调用,其返回值被赋给关键字as后面变量
    8.__exit__方法接收三个参数,异常类型,异常对象和异常跟踪.它在离开方法时被调用,如果__exit__返回false,将抑制所有的异常.
    9.文件也可用做上下文管理器.他们的方法__enter__返回文件对象本身,而方法__exit__关闭文件
    10.with语句作用效果相当于try-except-finally
    
    # 功能详解
        f.read(3)          # 读取前三个字符
        f.seek(3)          # 移动光标,以字节为单位.如果文本是中文,不是3倍数会报错
                           # seek(0)开头;seek(0, 2)结尾
        f.tell()           # 获取光标的位置,按字符计算
        count = f.tell()
        f.seek(count-9)    # 意思是从获取的位置的-3开始
        f.readlines()      # 输出的是列表,每一行是列表中的一个元素
        f.truncate()       # 截取文件,截取几位括号里加几
                           # 方法2:移动光标,然后f.truncate(),光标后边都删除
                           # 注意,需要用到写操作,意味着会删除源文件内容
        writeable()        # 是否可写
        readable()         # 是否可读
    
        r       # 非文字文件用rb打开
        f = open("filename", mode="rb")
        content = f.read()
        f.close()
    
        w
        对于写,没有文件则创建文件,有文件先清除源文件再写
        f = open("filename", mode="w", encoding="utf-8")
        f.write("123")
        f.close()
    
        f = open("filename", mode="wb")
        f.write("浮点数".encode("utf-8"))
        f.close()
    
        f = open("filename", mode="wb", encoding="utf-8")
        f.write("123")
        f.close()               # 这两种方法结果相同,目前用encoding会报错
    
        a       # a没有读功能,读会报错,a+能读
        f = open("filename", mode="a", encoding="utf-8")
        f.write("123")
        f.close()               # 追加写入
    
        r+
        f = open("filename", mode="r+", encoding="utf-8")
        print(f.read())
        f.write("123")
        print(f.read())         # 新内容不会读出来
        f.close()
    
        f = open("filename", mode = "r+b")
        print(f.read())
        f.write("123", encode("utf-8"))
    
    with open("filename", mode="r", encoding="utf-8") as obj:
        with open("filename1", mode="r", encoding="utf-8") as obj1:
            print(obj.read())
    # 可以打开多个文件
    

     

    监听文件输入

    f = open("file", encoding="utf-8")
    while True:
        line = f.readline()
        if line:
            print(line.strip(), end="")
    
  • 相关阅读:
    洛谷 P1089.津津的储蓄计划
    AcWing 786.第k个数
    差分
    AcWing 798.差分矩阵
    AcWing 797.差分
    AcWing 796.子矩阵的和
    Python 初始—(项目 目录结构)
    Python 初始—(迭代器和生成器)
    Python 初始—(装饰器)
    Python 初始—(高阶函数)
  • 原文地址:https://www.cnblogs.com/FGdeHB/p/15827886.html
Copyright © 2020-2023  润新知