• 【Python21天学习挑战赛】文件读写操作


    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。


    文件的操作步骤:

    1. 打开文件
    2. 操作文件
    3. 关闭文件

    文件的格式:

    f = open ( “file:文件的位置(路径)”,“mode:操作文件的模式”,“encoding:文件编码的方式”)

    1 r、w、a

    1.1 r 操作:

    读取方式:一般文件读过之后,不会再读了

    print(f.read()) #全部读取
    print(f.read(5)) #按照字符读取
    
    • 1
    • 2
    print(f.readline().strip()) #按照行读取,读取默认有一个:"张老头真帅!!\n"
    print(f.readline()) #按照行读取,.strip()去除换行符
    print(f.readline()) #按照行读取
    print(f.readlines())    #一行一行读取,保存在列表中
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    若要读取大文件,用循环:

    for i in f:
        print(i.strip())    #本质就是一行一行读取
    #   输出:
    # 张老头真帅!!
    # 憨憨:123456789
    # 铁蛋:158495486665
    # 铁柱:17739722352
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.2 w操作:

    注意:w,a自动检测,没文件就创建,有文件就操作

    步骤:

    • (1)先清空文件;
    • (2)写入文件
    f=open("小姐姐电话号码",mode="w",encoding="utf-8")
    print(f.write("123456789"))
    f.write("123456789\n")
    f.write("123456789\n")
    f.write("123456789\n")
    #   输出:9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    路径:

    • 绝对路径 – 从根目录开始:C:\…\…\…
    f=open("F:\pythonOpenCV\python基础入门\小姐姐电话号码","r",encoding="utf-8")
    print(f.read())
    
    • 1
    • 2
    • 相对路径打开文件, …/ 返回上一层

    1.3 a操作: 追加写

    说明:在源文件的基础上继续写

    f=open("小姐姐电话号码","a",encoding="utf-8")
    f.write("13843888888\n")
    f.write("405651888888\n")
    
    • 1
    • 2
    • 3

    源文件:
    在这里插入图片描述
    在这里插入图片描述

    2 rb、wb、ab

    f1=open("1.jpg","rb")
    print(f1.read())     #读取全部文档
    print(f1.read(3))    #读取前三个字节
    # 一般用于爬虫,爬取图片
    f=open("3.jpg","wb")
    f.write(f1.read())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    3 r+、w+、a+

    3.1 r+操作:读写

    错误操作:先写后读

    f=open("小姐姐电话号码","r+",encoding="utf-8")
    f.write("憨憨最憨\n")
    print(f.read())
    
    • 1
    • 2
    • 3

    正确操作:先读后写

    f=open("小姐姐电话号码","r+",encoding="utf-8")
    print(f.read())
    f.write("憨憨最憨\n")
    
    • 1
    • 2
    • 3

    3.2 w+:清空写,读

    f=open("小姐姐电话号码","w+",encoding="utf-8")
    f.write("憨憨最憨\n")
    print(f.read())
    
    • 1
    • 2
    • 3

    3.3 a+:追加写,读

    f=open("小姐姐电话号码","a+",encoding="utf-8")
    f.write("憨憨最憨\n")
    print(f.read())
    
    • 1
    • 2
    • 3

    4 其他操作

    4.1 tell 查看光标

    f=open("小姐姐电话号码","a+",encoding="utf-8")
    f.write("憨憨最憨\n")
    print(f.tell()) #   返回字节数
    
    • 1
    • 2
    • 3

    结果:

    文件内容:
    憨憨最憨
    憨憨最憨
    输出:
    28
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解释:

    ascii – 没有中文
    gbk – 英文8b,1B,中文16b 2B
    unicode – 英文 16b 2B,中文32b 4B
    UTF-8 – 汉字编码占用3个字节;

    4.2 seek 移动光标

    两个参数:
    seek(0,0) – 移动到文件的头部
    seek(0,1) – 当前位置
    seek(0,2)
    – 移动到文件的末尾
    一个参数:
    seek(3) – 按照字节进行移动(按照编码集进行计算)

    print(f.seek(0,2))    #将光标移动到指定位置
    print(f.read())
    
    • 1
    • 2

    4.3 文件修改

    说明:把文件里面的内容修改

    源文件:
    在这里插入图片描述

    f=open("小姐姐电话号码","r",encoding="utf-8")
    s=f.read()
    s1=s.replace("最","太")
    print(s1)
    #   换完之后再写入文件
    f=open("小姐姐电话号码","w",encoding="utf-8")
    f.write(s1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    结果:
    在这里插入图片描述

    存在问题:

    1. 原来文件未被保留
    2. 先读后写耽误时间
    3. 文件未被关闭
    4. 可能有时候需要一下打开很多文件

    解决办法:

    (1) with:关键字 open® as f,open(w) f1:
    (2)---------文件的具体操作

    with open("小姐姐电话号码","r",encoding="utf-8") as f,open("小姐姐电话号码.txt","w",encoding="utf-8") as f1:
        for i in f:
            s1 = i.replace("最", "太爱")
            f1.write(s1)
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    更改文件名

    # import os
    # os.rename("小姐姐电话号码.txt","小姐姐电话号码.bak")
    
    • 1
    • 2
  • 相关阅读:
    基于冠状病毒群体免疫算法优化概率神经网络PNN的分类预测 - 附代码
    三、CSS基础-元素显示模式 行元素,块元素,行内块元素
    《Solidity 简易速速上手小册》第7章:智能合约的部署与交互(2024 最新版)
    携职教育:不容易啊,我的软考高项经验分享
    Spring IOC源码:ApplicationContext刷新前准备工作
    三、Thread 类和Runnable 接口详解
    爽!腾讯大佬巅峰之作Redis成长笔记,真好用感觉以前白学了
    Apache zookeeper kafka 开启SASL安全认证
    针对CSP-J/S的每日一练:Day 8
    Pymol做B因子图
  • 原文地址:https://blog.csdn.net/qq_44859533/article/details/126255385