zoukankan      html  css  js  c++  java
  • 文件操作初识

    文件操作初识

    1. 文件操作步骤

      • 打开文件
      • 操作文件
      • 关闭文件 f.close()
    2. 打开文件

      f = open("文件路径",mode="文件操作模式",encoding="编码方式")
      

      f 文件句柄

      路径:绝对路径(从磁盘的根处查找)

      ​ 相对路径(相对当前文件进行查找的),建议使用相对路径

      import os
      print(os.getcwd())#查看当前工作路径
      

      可通过源码显示方式填写路径,如下:

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="r",encoding="utf-8")
      

      可减少因路径中“”所造成的错误。

      编码方式:win ——gbk

      ​ linux——utf-8

      ​ mac——utf-8

    3. 文件操作模式

      3.1文本文件

      r 读 读文件,都到哪,光标移动到哪,下次读就从光标位置开始

      f.read() 一次全部读完整个文件,可按字符读取若文件太大会造成内存溢出

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="r",encoding="utf-8")
      print(f.read())
      结果:
      铁憨憨
      血河大帝
      碎小梦
      龙吟
      

      f.read(2) 读取前两个字符

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="r",encoding="utf-8")
      print(f.read(2))
      结果:
      铁憨
      

      f.readline() 读取一行文件

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="r",encoding="utf-8")
      print(f.readline())
      结果:
      铁憨憨
      

      f.readlines() 按行读取,存储到列表中

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="r",encoding="utf-8")
      print(f.readlines())
      结果:
      ['铁憨憨
      ', '血河大帝
      ', '碎小梦
      ', '龙吟']
      

      通过for循环迭代,一行一行读取,防止内存溢出

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="r",encoding="utf-8")
      for i in f:
          print(i)
      结果:
      铁憨憨
      
      血河大帝
      
      碎小梦
      
      龙吟
      

      w 写 清空写

      若文件不存在先创建文件,在执行写操作;若文件存在,会先删除原文件中的内容在执行写操作。

      a 追加写 写在文件末尾

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="a",encoding="utf-8")
      f.write("碎梦都是坑!")
      文本中显示内容:
      铁憨憨
      血河大帝
      碎小梦
      龙吟碎梦都是坑!
      

      r+ 读写 先读后写

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="r+",encoding="utf-8")
      f.read()
      f.write("会呼吸的江湖")
      文件显示内容:
      铁憨憨
      血河大帝
      碎小梦
      龙吟碎梦都是坑!会呼吸的江湖
      

      w+ 写读 先写后读,会先将原文件内容删除,然后写,最终读不到文件。是真的没用。

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="w+",encoding="utf-8")
      f.write("会呼吸的江湖")
      f.read()
      结果:
      无返回
      文件显示内容:
      会呼吸的江湖
      

      a+ 追加写读 直接追加在文件末尾,直接读不出,需通过移动光标来完成读操作

      f = open(r"E:python_workspaceday008顺火暖.txt",mode="a+",encoding="utf-8")
      f.write("会呼吸的江湖")
      f.seek(0)
      print(f.read())
      结果:
      铁憨憨
      血河大帝
      碎小梦
      龙吟碎梦都是坑!会呼吸的江湖
      

      f.tell() 查看光标位置,按字节查看

      f.seek(0,0) 移动光标到文件的开始位置,按字节移动

      f.seek(0,1) 移动光标到光标的当前位置,按字节移动

      f.seek(0,2) 移动光标到文件的末尾位置,按字节移动

      3.2 非文本文件

      rb 读 wb写 ab追加写 不能指定编码

      import requests
      ret = requests.get("http://www.521609.com/uploads/allimg/151124/1-1511241G251317.png")
      f = open("2.jpg",mode="wb")
      f.write(ret.content)
      f.close()
      
    4. 另一种文件打开方式

      with open("文件路径",mode="操作文件的方式",encoding="编码") as f:
      上下文管理
      1.可以自动关闭文件
      2.可以同时打开多个文件

      with open("day8",mode="r",encoding="utf-8") as f,
          open("a",mode="w",encoding="gbk") as f1:
          print(f.read())
          f1.write("真饿!")
      
    5. 文件的修改

      with open("原文件")as f,open("新文件")as f1:
      f.for循环的读取
      f1.for循环的写入

      with open("day8",mode="r+",encoding="utf-8")as f:
          content = f.read()
          content = content.replace("您","你")
          f.seek(0,0)
          f.write(content)
      

      import os
      os.rename("原文件名字",备份名字") # 对原文件进行备份
      os.rename("新文件名字","原文件名字") # 把新文件改成原文件的名字

      with open("day8",mode="r",encoding="utf-8")as f,
      open("new_day8",mode="a",encoding="utf-8")as f1:
          for i in f:
              content = i.replace("你","我")
              f1.write(content)
      import os
      os.remove("day8")  # 原数据可以使用rename来做备份
      os.rename("new_day8","day8")
      
  • 相关阅读:
    webkit特有的css属性
    js apply/call/caller/callee/bind使用方法与区别分析
    canvas
    seajs
    div 等高
    js常用函数
    浮动元素水平居中
    JavaScript的9个陷阱及评点
    Touch Event
    js跨域问题
  • 原文地址:https://www.cnblogs.com/yaoqi17/p/11018408.html
Copyright © 2011-2022 走看看