美文网首页
python入门 第九天 文件操作

python入门 第九天 文件操作

作者: xinmin | 来源:发表于2018-08-21 22:04 被阅读0次
    • 文件操作
      • open 打开文件
      # open(文件名, 模式, 编码)
      f = open('haha.log ', "r") #  默认是只读模式 r
      data = f.read()
      f.close()
      print(data)
      # 基本的打开方式(可加编码方式)
      # 1. 只读:r (不写时默认)
      f = open('haha.log ', "r")
      # 2. 只写:w 文件存在时,把文件清空重写,不存在时创建,不可读
      f = open('haha.log ', "w")
      f.write("123")
      f.close()
      # 3. 只写:x 文件存在报错,不存在创建,不可读(python3)
      # 4. 追加:a 文件存在追加内容,不存在创建,不可读
      f = open("haha.log", "a")
      f.write("666")
      f.close()
      # 字节的方式打开(不用加编码方式)
      # 1. 只读:rb
      f = open("haha.log", "rb")
      data = f.read()
      f.close()
      print(data)
      # 2. 只写:wb
      f = open("haha.log", "wb")
      f.write(bytes("中文", encoding="utf-8"))
      f.close()
      # 常用 r/w/x/a =====> str
      # rb/wb/xb/ab ======> bytes
      # r+:读写
      f = open("haha.log", "r+", encoding="utf-8")
      data = f.read() # 不加参数,默认从指针0读到末尾
      print(type(data), data) # <class 'str'> 中文
      f.write("中国人") # 在末尾追加,指针到最后了
      data = f.read() # 继续读,后面就为空了
      f.close()
      # w+:写读,先清空,读在写之后就可以读了
      # 先清空,之后写的才能读,写--->指针到最后
      f = open("haha.log", "w+", encoding="utf-8")
      f.write("张三")
      f.seek(0) # 写过后指针到最后了,seek()调整指针
      data = f.read()
      f.close()
      print(data)
      # a+:打开的同时,将指针一到最后
      # 写时,追加,放在最后
      f = open("haha.log", "a+", encoding="utf-8")
      data = f.read()
      f.seek(0)
      print(data)
      
    • 总结
    • f.tell():获取指针的位置
    • f.seek():调整指针的位置
    • f.write("xxxx"): 写
    • f.read("xxxx"): 读
    • 共有的特性:seek,读取
    • flush():刷新缓冲区数据到硬盘
    • readline():仅读取一行
    • truncate():截取前面的内容(依赖于指针)
      # 一行一行的读,不费内存
      f = open("haha.log", "r", encoding="utf-8")
      for line in f:
          print(line)
      # 用with不用close了
      with open("haha.log", "r") as f:
          f.read()
      
    • python2.7后with支持同时打开多个文件
      # 节约内存的方式把obj1文件写入obj2文件
      with open('log1', 'r') as obj1, open('log2', 'w') as obj2:
          for line in obj1:
              obj2.write(line) 
      
    • 补充
      • r+,读写:读--->从0开始读取 写---->如果先读;就在最后追加,主动seek,写从当前指针向后写
      • a+,追加:读--->最后位置读取 写-----> 最后追加,主动seek,还是最后追加

    相关文章

      网友评论

          本文标题:python入门 第九天 文件操作

          本文链接:https://www.haomeiwen.com/subject/utrriftx.html