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


                      目录
                      相关文章
                      |
                      3月前
                      |
                      编译器 Python
                      如何利用Python批量重命名PDF文件
                      本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
                      |
                      3月前
                      |
                      编译器 Python
                      如何利用Python批量重命名文件
                      本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
                      |
                      4月前
                      |
                      编解码 Prometheus Java
                      当Python同时操作1000个文件时,为什么你的CPU只用了10%?
                      本文介绍如何构建一个高效的文件处理系统,解决单线程效率低、多线程易崩溃的矛盾。通过异步队列与多线程池结合,实现任务调度优化,提升I/O密集型操作的性能。
                      73 4
                      |
                      4月前
                      |
                      人工智能 索引 Python
                      [oeasy]python094_使用python控制音符列表_midi_文件制作
                      本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
                      110 6
                      |
                      6月前
                      |
                      Python
                      使用Python实现multipart/form-data文件接收的http服务器
                      至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
                      270 69
                      |
                      3月前
                      |
                      数据采集 监控 算法
                      Python文件与目录比较全攻略:从基础操作到性能优化
                      文件比较的核心在于数据指纹校验,通过逐字节比对生成唯一标识,确保内容一致性。从标准库的os与filecmp到高性能第三方库如pydiffx,再到分布式与量子加密技术的未来趋势,文件比较广泛应用于数据备份、代码审查与系统监控等领域,是保障数据完整性的关键技术手段。
                      89 0
                      |
                      4月前
                      |
                      数据采集 存储 API
                      Python爬虫结合API接口批量获取PDF文件
                      Python爬虫结合API接口批量获取PDF文件
                      |
                      4月前
                      |
                      数据采集 运维 BI
                      Python 文件操作进阶|使用 shutil 实现高效文件复制
                      在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!
                      |
                      6月前
                      |
                      Shell 开发者 Docker
                      Python文件打包:一站式指南
                      本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
                      460 7
                      |
                      7月前
                      |
                      存储 算法 文件存储
                      探秘文件共享服务之哈希表助力 Python 算法实现
                      在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。

                      热门文章

                      最新文章

                      推荐镜像

                      更多