zoukankan      html  css  js  c++  java
  • 文件的基础操作

    1.文件操作的初始

    • 利用python代码写一个软件,去操作文件
      • 文件路径:path
      • 打开模式:读(read),写(write),追加(append),读写,写读。
      • 编码方式:utf-8,gbk等。
    • 基本格式:
    f1 = open('d:主妇空姐模特联系方式.txt',encoding='utf-8',mode='r')
    content = f1.read()
    print(content)
    f1.close()
    • 代码的解释:
    open  是内置函数,open底层调用的是操作系统的接口。
    f 变量,也称文件句柄,对文件进行的任何操作,都得通过文件句柄f1.的方式
    encoding:可以不写,不写参数,默认使用编码就是操作系统的编码
      windows: gbk
      linux  : utf-8
      mac    : utf-8  
    mode:模式,可以不写,默认就是可读模式 r 
    f.close()关闭文件
    • 文件操作的三部曲:
    1. 打开文件
    2. 对文件句柄进行相应操作
    3. 关闭文件  

    2.文件操作的读

    • 读的模式:
      • r,rb,r+,r+b
      • r
        • read() 全部读出来
        • read(n) 按照字符读取
        • readline() 读出一行
        • readlines() 返回一个列表,列表中的每个元素是原文的每一行
      • rb:操作的是非文本的文件:图片,音频,视频等之类的文件。  
      • for 循环读出
    # read()  全部读出来
    f = open("a.txt",mode="r",encoding="utf-8")
    content = f.read()
    print(content)
    f.close()  
    
    # read(n)  按照字符读取
    f = open("a.txt",mode="r",encoding="utf-8")
    content = f.read(10)
    print(content)
    f.close()
    
    # readline()  读出一行
    f = open("a.txt",mode="r",encoding="utf-8")
    content = f.readline()
    print(content)
    f.close()
    
    # readlines()  返回一个列表,列表中每个元素是原文件的每一行
    f = open("a.txt",mode="r",encoding="utf-8")
    content = f.readlines()
    print(content)
    f.close()
    
    # for 循环读取
    f = open("a.txt",mode="r",encoding="utf-8")
    for i in f:
        print(i)
    f.close()

    3.文件操作的写

    • w, wb,  w+, w+b 四种模式
    # 没有文件,创建文件,写入内容
    f = open('b.txt',encoding='utf-8',mode='w')
    f.write('随便写一点')
    f.close()
    
    # 如果文件存在,先清空原文件内容,在写入新内容
    f = open('文件的写',encoding='utf-8',mode='w')
    f.write('小王最帅....')
    f.close()
    
    # wb
    f = open('美女.jpg',mode='rb')
    content = f.read()
    f.close()
    
    f1 = open('美女2.jpg',mode='wb')
    f1.write(content)
    f1.close()

    4.文件操作的追加

    • a, ab, a+,a+b 四种模式    
    # 没有文件创建文件,追加内容
    f = open('文件的追加',encoding='utf-8',mode='a')
    f.write('当人闭着眼睛来到这个时间上,努力的张开眼睛,却没有爱惜自己的眼睛')
    f.close()
    
    # 有文件,在原文件的最后面追加内容。
    f = open('文件的追加',encoding='utf-8',mode='a')
    f.write('赵敏,舒淇,吕素')
    f.close()
    • 读并追加,顺序不能错
    f = open("a.txt",mode= "r+",encoding="utf-8")
    content = f.read()
    print(content)
    f.write("鸡汤都是吃鸡的人,流传下来的言语")
    f.close()
    
    # 错误实例
    f = open("a.txt",mode= "r+",encoding="utf-8")
    f.write("鸡汤都是吃鸡的人,流传下来的言语")
    content = f.read()
    print(content)
    f.close()

    5.文件操作的其他功能

    # tell 获取光标的位置 单位字节。
    f = open('文件的读写', encoding='utf-8')
    print(f.tell())
    content = f.read()
    print(content)
    print(f.tell())
    f.close()
    
    # seek 调整光标的位置
    f = open('文件的读写', encoding='utf-8')
    f.seek(7)
    content = f.read()
    print(content)
    f.close()
    
    # flush 强制刷新
    f = open('文件的其他功能', encoding='utf-8',mode='w')
    f.write('fdshdsjgsdlkjfdf')
    f.flush()
    f.close()

    6.打开文件的另一种方式

    # 优点1;不用手动关闭文件句柄
    with open("a.txt",mode="r",encoding="utf-8")as f:
        print(f.read)
    
    # 优点2:一个with 语句可以操作多个文件,产生多个文件句柄
    with open('t1', encoding='utf-8') as f1,
    open('t2', encoding='utf-8', mode='w')as f2:
        print(f1.read())
        f2.write('hfdsjkghkajhsdjg')

       这里要注意一个问题,虽然使用with语句方式打开文件,不用你手动关闭文件句柄,比较省事儿,但是依靠其自动关闭文件句柄,是有一段时间的,这个时间不固定,所以这里就会产生问题,如果你在with语句中通过r模式打开t1文件,那么你在下面又以a模式打开t1文件,此时有可能你第二次打开t1文件时,第一次的文件句柄还没有关闭掉,可能就会出现错误,他的解决方式只能在你第二次打开此文件前,手动关闭上一个文件句柄。

    7.文件操作的修改

    • 文件操作修改的流程:
    1. 已读的模式打开原文件。
    2. 以写的模式创建一个新文件。
    3. 将原文件的内容读出出来修改成新内容,写入新文件。
    4. 将原文件删除。
    5. 将新文件重名成原文件。
    • 具体的实现过程;
    # 简单版
    import os
    with open('a.txt',mode="r",encoding="utf-8")as f1,
            open("b.txt",mode="w",encoding="utf-8")as f2:
        old_content = f1.read()
        new_content = old_content.replace("alex","SB")
        f2.write(new_content)
    os.remove("a.txt")
    os.rename("b.txt","a.txt")
    
    
    # 进阶版
    import os
    with open("a.txt",mode="r",encoding="utf-8") as f1,
        open("b.txt",mode="w",encoding="utf-8")as f2:
        for i in f1:
            new_content = i.replace("SB","alex")
            f2.write(new_content)
    os.remove("a.txt")
    os.rename("b.txt","a.txt")
    
    
    有关清空的问题:
    关闭文件句柄,再次以w模式打开此文件时,才会清空。
    with open('文件的写', encoding='utf-8',mode='w') as f1:
        for i in range(9):
            f1.write('恢复贷款首付款')

    待续

  • 相关阅读:
    python之处理excel表格
    Django下JWT的使用
    Flask的上下文管理
    模块循环引用
    博客声明及意义
    IPTABLES--iptables
    挂载U盘
    tar压缩解压
    iconv字符编码转换
    VirtualBox设置共享文件夹
  • 原文地址:https://www.cnblogs.com/zangyue/p/12043657.html
Copyright © 2011-2022 走看看