• 文件操作


    文件操作:
    1. r

    路径有两种:
      1. 相对路径, 相对于你当前程序所在的文件夹.(必须掌握)
       ../ 返回上一层目录
       相对的是当前程序所在的文件夹
    
      2. 绝对路径. 1.从磁盘根目录寻找. 2.互联网上的一个绝对路路径
    f = open("file/wuse", mode="r", encoding="utf-8")
    s = f.read()
    f.close()   # 关闭句柄
    print(s)
    
    
    f = open("吃的", mode="r", encoding="utf-8")
    for line in f:  # 每次读取一行. 赋值给前面的line变量
        print(line)
    f.close()
    

      


    2. w

    f = open("小护士模特", mode="w", encoding="utf-8")   # 写入之前会情掉原来的内容
    f.write("杜十娘")
    f.flush()
    f.close()
    

      


    3. a

    f = open("小护士模特", mode="a", encoding="utf-8")   # 在原来的基础上进行追加内容. 
    f.write("小龙女")
    f.flush()
    f.close()
    

      


    4. r+
    读写模式.
    需要移动光标进行反复读写

    f = open("老师点名", mode="r+", encoding="utf-8") # r+模式, 默认情况下光标在文件的开头, 必须先读, 后写
    f.write("周润发")
    s = f.read()
    f.flush()
    f.close()
    print(s)
    
    
    f = open("精品", mode="r+", encoding="utf-8")
    s = f.read(3)
    # 不管你前面读了几个. 后面去写都是在末尾
    # f.write("哈哈")   # 1.在没有任何操作之前进行写. 在开头写  2. 如果读取了一些内容. 再写, 写入的是最后
    
    # print(ss)
    
    
    f = open("精品", mode="r+", encoding="utf-8")
    f.read(3)
    f.seek(3)   # 移动到xx位置
    移动到开头: f.seek(0)  开头
    移动到末尾: f.seek(0, 2)   末尾 第二个参数有三个值. 0: 再开头,  1: 在当前, 2: 末尾
    
    超人的都是精品.abcdefg潘长江是精品巴拉巴拉小魔仙哈哈
    f.seek(6)   # 移动6个字节. 2个字
    s = f.read(3)   # 读取3个字
    print(s)
    f.seek(0)
    ss = f.read(3)
    print(ss)
    
    s = f.read()
    f.seek(0)
    ss= f.read()
    print(s)
    print(ss)
    

      


    5. w+

    f = open("亵渎", mode="w+", encoding="utf-8")  # w 操作.会清空原来的内容.  w+是不用的.
    f.write("今天天气")
    f.seek(0)
    s = f.read()
    print(s)
    f.flush()
    f.close()
    

      


    6. a+
    7. b bytes 读写操作的是字节. 用在非文本上
    8. seek() 移动光标到xx位置
    开头: seek(0), 末尾: seek(0,2)
    9. 文件修改
    创建新文件. 把修改后的内容写入新文件. 删除老文件. 重命名新文件
    import os
    os.remove("")删除文件
    os.rename("源文件", "新文件名") 重命名文件

    import os
    
    with open("吃的", mode="r", encoding="utf-8") as f1, 
            open("吃的_副本", mode="w", encoding="utf-8") as f2:
        # s = f1.read()
        # ss = s.replace("肉", "菜")
        # f2.write(ss)
        for line in f1:
            s = line.replace("菜", "肉")
            f2.write(s)
    
    os.remove("吃的") # 删除文件
    os.rename("吃的_副本", "吃的")    # 重命名文件
    

      

    for line in f:
    line 一行数据

    with open("文件名") as f:
    不需要关闭文件句柄

    知识点补充

    f = open("亵渎", mode="r", encoding="UTF-8")
    # 如何判断这个文件可以进行什么操作
    # print(f.readable()) # 判断文件是否可读
    # print(f.writable()) # 是否可写入
    
    l = f.readlines()   # 拿到列表
    for s in l:
        ss = s.strip()  # strip() 去掉空格. 还可以去掉换行符, 制表符
        print(ss)
    print(l)
    f.flush()
    f.close()
    
    s = "	哈哈哈哈"
    print(s.strip())
    
    # truncate()
    f = open("马大帅", mode="r+", encoding="utf-8")
    f.seek(12)
    # f.truncate()    #  truncate() 不给参数. 从文件头.截取到当前位置
    f.truncate(15)  # truncate(参数) 给了参数. 从文件头截取到你给这个参数的位置
    f.flush()
    f.close()
    

      

  • 相关阅读:
    201706120024 编译原理第一次作业
    P2014 选课 题解(树形DP)
    基础算法·二分答案
    P4285 [SHOI2008]汉诺塔 题解 (乱搞)
    2018.12-2019.1 TO-DO LIST
    记录一枚蒟蒻的成长(持续更新)
    P3796 【模板】AC自动机(加强版) 题解(Aho-Corasick Automation)
    BuaacodingT651 我知道你不知道圣诞节做什么 题解(逻辑)
    P2766 最长不下降子序列问题 题解(网络流)
    P2516 [HAOI2010]最长公共子序列 题解(LCS)
  • 原文地址:https://www.cnblogs.com/duanpengpeng/p/9294706.html
Copyright © 2020-2023  润新知