• python文件操作


    1. 初识文件操作

    • 常规操作(太low:没缩进,还需要关闭,代码没有美感)

      f = open('path',mode='r',encoding='utf-8')
      f.read()
      f.close()
    • 进阶操作(高逼格:有缩进,不需要手动关闭)

      with open('path', 'r', encoding='utf-8')as f:
          f.read()

    2. 只读(r, rb)

    • r模式

      # f 叫文件句柄. 我们通过这个句柄去操纵这个文件.
      f = open("21天学会python", mode="r", encoding="UTF-8")
      content = f.read()  # 从文件中读取到数据. 交给前面的content
      print(content)
      f.close()

      rb模式

      # rb 读取字节,除了是字节不用写编码方式其余一样的
      f = open("21天学会python", mode="rb")
      content = f.read()
      print(content)
      f.close()

    3. 只写(w, wb)

    • w模式

      #下面这个栗子有点酸,明明是写模式,你非要读,请自行了结
      f = open("歌单", mode="w", encoding="utf-8")
      content = f.read()     # 在w模式下. 去读. 会出错
      print(content)
      f.write("两只老虎
      ")
      f.write("忐忑")
      f.flush()  # 刷新管道
      f.close()
      
      #正确示范:这歌单很牛逼的,谁听谁知道
      f = open("歌单", mode="w", encoding="utf-8")
      s = ["起风了", "凤舞九天", "冰河时代"]
      for e in s:
          f.write(e)
      f.close()
    • wb模式

      #喜欢带b的模式文件操作模式,符合我懒的气质,不用写编码方式
      #下面这个操作也是为了绕,非要在字节模式写汉字,完了用pycharm打开文件还TM是汉字,其中的奥秘只有地球人知道。
      f = open("歌单", mode="wb")
      f.write("金毛狮王".encode("UTF-8"))
      f.flush()
      f.close()

    4. 追加(a, ab)

    • a模式

      #已经轻车熟路了,不多介绍了。
      f = open("歌单哈哈", mode="a", encoding="UTF-8")
      f.write("又见炊烟")
      f.flush()
      f.close()
    • ab模式

      f = open("歌单哈哈.txt", mode="ab")
      f.write("又见炊烟".encode('utf-8'))
      f.flush()
      f.close()

    5. r+读写

    • 重头戏r+模式

      # 正常用法
      f = open("歌单", mode="r+", encoding="UTF-8")
      #
      content = f.read()
      print(content)
      
      #
      f.write("成都")
      f.flush()
      f.close()
      
      # 非正常用法
      f = open("歌单", mode="r+", encoding="UTF-8")
      #
      f.write("凉凉")
      #
      content = f.read()
      print(content)
      f.flush()
      f.close()
      #深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显⽰示的是多少. 再写入 或者操作文件的时候都是在结尾进行的操作.

    6. w+写读

    • w+模式

      # 先将所有的内容清空. 然后写入. 最后读取. 但是读取的内容是空的, 不常用 
      f = open("⼩娃娃", mode="w+", encoding="utf-8")
      f.write("哈哈")
      content = f.read()
      print(content)
      f.flush()
      f.close()

    7. a+写读(追加写读)

    • a+模式


      f = open("⼩娃娃", mode="a+", encoding="utf-8") f.write("⻢化腾") content = f.read() print(content) f.flush() f.close() # a+模式下, 不论先读还是后读. 都是读取不到数据的.

      # 还有一些其他的带b的操作. 就不多赘述了了. 就是把字符换成字节. 我这么懒就不分享了,欢迎留言分享。

    8. 其他操作方法

    • seek和tell好基

      #seek的常规操作
      f.seek(3)   # 移动的是字节单位,在UTF-8文件中. 如果是中文移动的必须是3的倍数
      f.seek(0) # 重新回到起点
      f.seek(0, 2) # 移动到结尾
      
      #tell的一阳指
      print(f.tell())  # 告诉光标在哪里
    • 被遗忘的truncate

      #直接粘习题了,用法自行体会吧
      
      # h,截取原文件,截取内容:‘葫芦娃,葫芦娃,’
      # 1.先用seek,再去截取,有点多此一举
      f = open('db1/葫芦娃', 'r+', encoding='utf-8')
      f.seek(24)
      f.truncate()
      f.seek(0)
      print(f.read())
      f.flush()
      f.close()
      # 2.直接去截取
      f = open('db1/葫芦娃', 'r+', encoding='utf-8')
      f.truncate(24)
      print(f.read())
      f.flush()
      f.close()

    9. 文件的修改

    • 提前搞一波OS模块

      #用了课后练习的代码,还是默写,重点,重点,第三遍不说了!
      import os
      with open('../db2/alex.txt','r',encoding='utf-8')as f1,
          open('../db2/alex_new.txt','w',encoding='utf-8')as f2:
          for i in f1:
              new_i=i.replace('alex','SB')
              f2.write(new_i)
      os.remove('../db2/alex.txt')
      os.rename('../db2/alex_new.txt','../db2/alex.txt')

    10.相对路径和绝对路径

    • 绝对路径. 从磁盘根目录寻找文件

      #举个栗子:
      path = "d:/sylar/呵呵.txt"
    • 相对路径, 相对于你当前文件所在的位置

      #再举个栗子
      path = "呵呵.txt"
    • 返回上一级:../

    • 路径里有 , , 这种有歧义的字母开头需要通过加反斜杠进行转义,或者直接在路径前面加r

      # 建议一般不要起这种带特殊意义字母开头的单词
      # 第一个斜杠用来转义
      path1 = 'db\test.txt'
      # 加r牛逼,一步到位
      path2 = r'test.txt'
  • 相关阅读:
    plsql和tsql常用函数比对
    全面对比T-SQL与PL/SQL
    SQL/T-SQL/PLSQL
    Oracle数据库中的数据出错的解决办法
    2008-03-18 22:58 oracle基础知识小结
    Oracle SQL性能优化
    Oracle存储过程基本语法
    jenkins权限配置不对导致jenkins无法登陆
    jenkins关闭和重启
    Jenkins的安装(最为简单的安装方法)
  • 原文地址:https://www.cnblogs.com/changwentao/p/9157233.html
Copyright © 2020-2023  润新知