Python基础语法第七章之文件

简介: 一个机器上, 会存在很多文件, 为了让这些文件更方面的被组织, 往往会使用很多的 "文件夹"(也叫做目录)来整理文件,实际一个文件往往是放在一系列的目录结构之中的,为了方便确定一个文件所在的位置, 使用 文件路径 来进行描述。描述一个文件的位置, 使用 绝对路径 和 相对路径 都是可以的. 对于新手来说, 使用 绝对路径 更简单更好理解, 也不容易出错.. 相对路径需要先指定一个基准目录, 然后以基准目录为参照点, 间接的找到目标文件. 咱们课堂上暂时不详细介绍.使用 close 方法关闭已经打开的文件.

 目录

一、文件

1.1文件是什么

1.2文件路径

1.3文件操作

1.3.1 打开文件

1.3.2关闭文件

1.3.3写文件

1.3.4读文件

二、使用上下文管理器

2.1上下文管理器


一、文件

1.1文件是什么

变量是把数据保存到内存中. 如果程序重启/主机重启, 内存中的数据就会丢失.

要想能让数据被持久化存储, 就可以把数据存储到硬盘中. 也就是在 文件 中保存.

在 Windows "此电脑" 中, 看到的内容都是 文件.

image.gif编辑

通过文件的后缀名, 可以看到文件的类型. 常见的文件的类型如下:

    • 文本文件 (txt)
    • 可执行文件 (exe, dll)
    • 图片文件 (jpg, gif)
    • 视频文件 (mp4, mov)
    • office 文件 (.ppt, docx)
    • ......

    1.2文件路径

    一个机器上, 会存在很多文件, 为了让这些文件更方面的被组织, 往往会使用很多的 "文件夹"(也叫做目录)来整理文件,实际一个文件往往是放在一系列的目录结构之中的,为了方便确定一个文件所在的位置, 使用 文件路径 来进行描述。

    目录之间的分隔符, 可以使用 \ 也可以使用 / . 一般在编写代码的时候使用 / 更方便.

    上述以 盘符 开头的路径, 我们也称为 绝对路径.

    除了绝对路径之外, 还有一种常见的表示方式是 相对路径. 相对路径需要先指定一个基准目录, 然后以基准目录为参照点, 间接的找到目标文件. 咱们课堂上暂时不详细介绍.

    描述一个文件的位置, 使用 绝对路径 和 相对路径 都是可以的. 对于新手来说, 使用 绝对路径 更简单更好理解, 也不容易出错.

    1.3文件操作

    1.3.1 打开文件

    使用内建函数 open 打开一个文件.

    f = open('d:/test.txt', 'r')

    image.gif

      • 第一个参数是一个字符串, 表示要打开的文件路径
      • 第二个参数是一个字符串, 表示打开方式. 其中 r 表示按照读方式打开. w 表示按照写方式打开. a表示追加写方式打开.
      • 如果打开文件成功, 返回一个文件对象. 后续的读写文件操作都是围绕这个文件对象展开.
      • 如果打开文件失败(比如路径指定的文件不存在), 就会抛出异常.

      image.gif编辑

      1.3.2关闭文件

      使用 close 方法关闭已经打开的文件.

      f.close()

      image.gif

      使用完毕的文件要记得及时关闭!

      flist = []
      count = 0
      while True:
          f = open('d:/test.txt', 'r')
          flist.append(f)
          count += 1
          print(f'count = {count}')

      image.gif

      image.gif编辑

      如上面代码所示, 如果一直循环的打开文件, 而不去关闭的话, 就会出现上述报错.

      当一个程序打开的文件个数超过上限, 就会抛出异常.

      注意: 上述代码中, 使用一个列表来保存了所有的文件对象. 如果不进行保存, 那么 Python 内置的垃圾回收机制, 会在文件对象销毁的时候自动关闭文件.但是由于垃圾回收操作不一定及时, 所以我们写代码仍然要考虑手动关闭, 尽量避免依赖自动关闭.

      1.3.3写文件

      文件打开之后, 就可以写文件了.

        • 写文件, 要使用写方式打开, open 第二个参数设为 'w'
        • 使用 write 方法写入文件.
        f = open('d:/test.txt', 'w')
        f.write('hello')
        f.close()

        image.gif

        用记事本打开文件, 即可看到文件修改后的内容.

          • 如果是使用 'r' 方式打开文件, 则写入时会抛出异常.
          f = open('d:/test.txt', 'r')
          f.write('hello')
          f.close()

          image.gif

          image.gif编辑

            • 使用 'w' 一旦打开文件成功, 就会清空文件原有的数据.
            • 使用 'a' 实现 "追加写", 此时原有内容不变, 写入的内容会存在于之前文件内容的末尾.
            f = open('d:/test.txt', 'w')
            f.write('hello')
            f.close()
            f = open('d:/test.txt', 'a')
            f.write('world')
            f.close()

            image.gif

              • 针对已经关闭的文件对象进行写操作, 也会抛出异常.
              f = open('d:/test.txt', 'w')
              f.write('hello')
              f.close()
              f.write('world')

              image.gif

              1.3.4读文件

                • 读文件内容需要使用 'r' 的方式打开文件
                • 使用 read 方法完成读操作. 参数表示 "读取几个字符"
                f = open('d:/test.txt', 'r')
                result = f.read(2)
                print(result)
                f.close()

                image.gif

                  • 如果文件是多行文本, 可以使用 for 循环一次读取一行.
                  f = open('d:/test.txt', 'r')
                  for line in f:
                  print(f'line = {line}')
                  f.close()

                  image.gif

                  注意: 由于文件里每一行末尾都自带换行符, print 打印一行的时候又会默认加上一个换行符, 因此打印结果看起来之间存在空行.

                  使用 print(f'line = {line}', end='') 手动把 print 自带的换行符去掉.

                    • 使用 readlines 直接把文件整个内容读取出来, 返回一个列表. 每个元素即为一行.
                    f = open('d:/test.txt', 'r')
                    lines = f.readlines()
                    print(lines)
                    f.close()

                    image.gif

                    保证编码格式统一:f = open('d:/test.txt', 'r', encoding='utf8')


                    二、使用上下文管理器

                    2.1上下文管理器

                    打开文件之后, 是容易忘记关闭的. Python 提供了 上下文管理器 , 来帮助程序猿自动关闭文件.

                      • 使用 with 语句打开文件.
                      • 当 with 内部的代码块执行完毕后, 就会自动调用关闭方法.
                      with open('d:/test.txt', 'r', encoding='utf8') as f:
                          lines = f.readlines()
                          print(lines)

                      image.gif


                      目录
                      相关文章
                      |
                      1月前
                      |
                      人工智能 Ubuntu IDE
                      【Python】基础:环境配置与基础语法
                      本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
                      56 4
                      |
                      1月前
                      |
                      自然语言处理 数据处理 Python
                      python操作和解析ppt文件 | python小知识
                      本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
                      329 60
                      |
                      10天前
                      |
                      机器学习/深度学习 数据挖掘 开发者
                      Python编程入门:理解基础语法与编写第一个程序
                      【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
                      |
                      1月前
                      |
                      安全 Linux 数据安全/隐私保护
                      python知识点100篇系列(15)-加密python源代码为pyd文件
                      【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
                      python知识点100篇系列(15)-加密python源代码为pyd文件
                      |
                      16天前
                      |
                      开发者 Python
                      Python中__init__.py文件的作用
                      `__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
                      17 2
                      |
                      1月前
                      |
                      Linux 区块链 Python
                      Python实用记录(十三):python脚本打包exe文件并运行
                      这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
                      55 1
                      Python实用记录(十三):python脚本打包exe文件并运行
                      |
                      20天前
                      |
                      存储 Python Perl
                      python正则语法
                      本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
                      20 2
                      |
                      26天前
                      |
                      存储 程序员 开发者
                      Python编程入门:从零开始掌握基础语法
                      【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
                      |
                      1月前
                      |
                      Java Python
                      > python知识点100篇系列(19)-使用python下载文件的几种方式
                      【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
                      |
                      1月前
                      |
                      数据安全/隐私保护 流计算 开发者
                      python知识点100篇系列(18)-解析m3u8文件的下载视频
                      【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
                      下一篇
                      无影云桌面