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

    今日主要内容
    1. 文件操作 open() 文件句柄
      open()打开一个文件, 获取的是文件句柄
      read() : 一次性全部读取  返回字符串  (正常情况下不用)   read(n) 读取n个字符

      readline():  读取一行数据  返回字符串  常搭配 strip()  去除"空白"内容 读取文件
      readlines() : 一次性全部读取  返回列表  (正常情况下不用)
      write() :  写入

    for line in f: 遍历文件中的内容

      路径的问题:
      1. 绝对路径  :  从磁盘根目录寻找   多用于运维  当文件路径固定的时候
      2. 相对路径  :   从当前程序运行的文件夹内寻找   用得多   ../表示上一层目录

      注意:  打开路径文件路径时 前面加 r  消除目录有 (转义字符)   的影响

    2. 文件操作的相关模式Mode

      适用于文本文件:
      r: 只读
      w: 只写  可以创建文件

    掌握文本文件复制

    f1 = open(r'c:/日记本.txt', mode='r', encoding='utf-8')
    f2 = open(r'e:/日记本.txt', mode='w', encoding='utf-8')
    for line in f1:
        f2.write(line)
    f1.close()
    f2.close()
    View Code

      a: 追加
      r+: 读写模式   坑1:  必须先读取,再写入   坑2:  不论你读取多少内容。再次写入的时候都是在末尾

    # 正常的
    # f = open("person", mode="r+", encoding="utf-8")
    # content = f.read()
    # f.write("黄蓉")   # 在末尾写入
    # print(content)
    
    # 错误的示范
    # f = open("person", mode="r+", encoding="utf-8")
    # f.write("杨千桦") # 默认如果直接写入的话。 在开头写入。 覆盖开头的内容
    # content = f.read()
    # print(content)
    View Code

      w+:  写读模式   坑:写入东西之后, 光标在末尾 ,读取不到内容

      a+:  追加写读模式   坑:  不论光标在何处 写入的时候都是在末尾

      下面的适用于非文本文件  b - bytes 读取和写入的是字节 , 用来操作非文本文件(图片, 音频, 视频)
      rb  wb  ab   不需要指定打开文件的编码

    掌握复制照片

    # 把胡一菲从c盘复制到d盘, 单纯的从bytes角度来复制的。 适用于所有文件
    f1 = open(r"c:胡一菲.jpg", mode="rb")
    f2 = open(r"d:胡二非.jpg", mode="wb")
    
    for line in f1: # 分批量的读取内容
        f2.write(line) # open()出来的结果可以使用read或者write. 根据mode来看
    
    f1.close()
    f2.close()
    View Code

      r+b  w+b   a+b

    3. 相关操作
      1. seek()移动光标(重点)   以字节为单移动
        seek(0) 开头
        seek(0,2) 移动到末尾

    # seek(参数1, 参数2)
    # 参数1表示的是偏移量,移动多少个单位
    # 参数2表示从什么位置进行偏移
    # 0: 开头
    # 1: 当前位置
    # 2: 末尾

      2. tell() 获取光标所在的位置
      3. truncate() 截断文件 默认从开头截取到光标位置 

    4. 文件修改
      with open(xxx) as 句柄,
      open(xxxxx)as xxx:
      不用手动关闭文件句柄

      文件修改的步骤
      1. 从源文件中读取数据。
      2. 写入到副本文件中
      3. 删除源文件
      4. 把副本重命名成源文件
      import os
      os.remove()
      os.rename()

  • 相关阅读:
    菜鸟涂鸦作品展_No.29
    菜鸟涂鸦作品展_No.27
    菜鸟涂鸦作品展_No.26
    关注的前沿动态
    货币转换
    第二周总结
    老鼠
    71 打印沙漏
    学习总结0.0
    第五周作业
  • 原文地址:https://www.cnblogs.com/Knight-huang/p/9857405.html
Copyright © 2011-2022 走看看