码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python - 文件操作(1)


    CSDN话题挑战赛第2期
    参赛话题:学习笔记

    Python学习 - 语法入门:https://blog.csdn.net/wanzijy/article/details/125287855
    Python学习 - 数据类型:https://blog.csdn.net/wanzijy/article/details/125341568
    Python学习 - 流程控制:https://blog.csdn.net/wanzijy/article/details/125400906
    Python学习 - 运算符(操作符):https://blog.csdn.net/wanzijy/article/details/125387919
    Python学习 - 列表:https://blog.csdn.net/wanzijy/article/details/125457990
    Python学习 - 字典:https://blog.csdn.net/wanzijy/article/details/125567225
    Python学习 -元组和集合:https://blog.csdn.net/wanzijy/article/details/125577609
    Python学习 - 函数(1):https://blog.csdn.net/wanzijy/article/details/125669084
    Python学习 - 函数(2):https://blog.csdn.net/wanzijy/article/details/125739981
    Python学习 - 类与对象:https://blog.csdn.net/wanzijy/article/details/125826952
    Python学习 - 面向对象之封装:https://blog.csdn.net/wanzijy/article/details/125902925
    Python学习 - 面向对象之继承:https://blog.csdn.net/wanzijy/article/details/125963829
    Python学习 - 面向对象之多态:https://blog.csdn.net/wanzijy/article/details/127140632
    Python - 文件操作(1):https://blog.csdn.net/wanzijy/article/details/127099071
    Python - 文件操作(2):https://blog.csdn.net/wanzijy/article/details/127150189
    Python学习 - 垃圾回收、特殊方法和模块:https://blog.csdn.net/wanzijy/article/details/126202999
    Python学习 - 异常处理:https://blog.csdn.net/wanzijy/article/details/126803672

    1. 简介

    通过 Python 程序来对计算机中的文件进行增删改查的操作
    I/O (Input / Output)

    操作文件的步骤:

    1. 打开文件
    2. 对文件进行各种操作(读、写),然后保存
    3. 关闭文件

    2. 打开文件

    open(file, encoding=None)

    • 打开一个文件的方法,会返回这个文件的对象
    • file:要打开的文件的名字(路径);如果目标文件和当前文件在同一级目录下,则直接使用文件名即可;如果不在同一目录下,要写上路径
      在 windows 使用路径时,可以使用 “ / ” 来代替 “ \ ”,或者可以使用 “ \ ” 来代替 “ \ ”,又或者使用原始字符串(即在字符串前加个“r”)
    • encoding 编码格式,出现编码问题时,可以将其设置为 “ uft-8 ” 或者其他编码格式
    file_name = 'Demo.txt'
    file_obj = open(file_name, encoding='utf-8')
    

    在表示路径时,可以使用 “. .” 来返回一级目录
    如果目标文件距离当前文件比较远,此时可以使用绝对路径(要从磁盘的根目录开始写)

    3. 关闭文件

    当我们获取文件对象以后,所有的对文件的操作,都是对这个对象的操作
    当关闭文件之后,就不能再通过该对象操作文件

    关闭方式:

    1. 调用 close() 方法
    file_name = 'Demo.txt'
    file_obj = open(file_name, encoding='utf-8')
    print(file_obj)
    file_obj.close()
    
    1. with … as :
      在 with 范围内可以直接使用打开的文件对象,但是在 with 范围外则无法使用
    with open(file_name, encoding='utf-8') as file_obj:
        print(file_obj)
    

    结合以前学的 try-catch 语句,那么正规的打开文件的代码应该是:

    file_name = 'Demo.txt'
    
    try:
        with open('asas', encoding='utf-8') as file_obj:
            print(file_obj)
    except FileNotFoundError:
        print(f'{file_name}文件不存在')
    

    4. 读取文件

    当调用 open() 来打开文件时,可以将文件分成两种类型:

    • 纯文本文件(使用 utf-8 等编码编写的文本文件)
    • 二进制文件(图片、mp3、ppt 等)

    open() 打开文件时,默认是以文本形式打开的,但是 open() 默认的编码为“None”
    当处理文本文件时,必须要指定文件的编码

    file_name = 'Demo.txt'
    try:
        with open(file_name, encoding='utf-8') as file_obj:
            content = file_obj.read()
            print(content)
    except FileNotFoundError:
        print(f'{file_name}文件不存在')
    

    如果直接调用 read(),会将文本中的所有内容全部一次性读取出来
    但是如果文件较大的话,会将内容加载到内存中,容易导致内存泄露

    read()

    • 可以接收一个 “ size ” 作为参数,该参数用来指定要读取的字符的数量
    • 默认值是 “-1”,表示读取全部内容
    • “size” 的单位是字符
    • 如果连续的调用 read(size),每一次读取都是从上次读取到的位置开始读取;如果字符的数量小于传入的 size 值,则会读取剩下的全部;如果语句读取到了文件的最后,则会返回 ’’(空串)
    • 如果想知道文件中的 size 是多少字符,可以调用 len() 方法进行查看

    当读取大文件时,可以利用 size 参数和循环来读取

    file_name = 'Demo.txt'
    try:
        with open(file_name, encoding='utf-8') as file_obj:
            chunk = 50
            while True:
                content = file_obj.read(chunk)
                if(not content):  #  空串会自动转为False
                    break
                print(content, end='')  #  end='' 的意思是将换行去掉
    except FileNotFoundError:
        print(f'{file_name}文件不存在')
    

    readlines() 直接读取一行,但是会一次性将读取到的内容返回,将其封装到一个列表中返回

    import pprint
    file_name = 'Demo.txt'
    try:
        with open(file_name, encoding='utf-8') as file_obj:
            pprint.pprint(file_obj.readlines())
    except FileNotFoundError:
        print(f'{file_name}文件不存在')
    

    也可以通过 for 循环去读取文件对象中的内容

    file_name = 'Demo.txt'
    try:
        with open(file_name, encoding='utf-8') as file_obj:
            for t in file_obj:
                print(t, end='')
    except FileNotFoundError:
        print(f'{file_name}文件不存在')
    
  • 相关阅读:
    Acwing算法基础学习笔记(二)二分
    Python数据挖掘实用案例——自动售货机销售数据分析与应用
    WeNet更新:喜马拉雅团队在 WeNet 中支持 Squeezeformer
    MySQL索引
    大语言模型中常见小模型LLM垂直领域应用微调数据集
    目标检测网络系列——YOLO V1
    Redis主从部署
    数学建模--K-means聚类的Python实现
    Docker安装Jenkins
    IntelliJ IDEA 2023.2新特性详解第二弹!
  • 原文地址:https://blog.csdn.net/wanzijy/article/details/127099071
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号