第 4 章 文件和目录工具文件和目录工具
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
"轻松五步,擦除硬盘!"
本章将继续介绍 Python 的系统接口,重点是与文件和目录相关的工具。正如您将看到的,利用 Python 内置库和标准库的支持,处理文件和目录树非常容易。因为文件是 Python 核心语言的一部分,所以本章的一些内容是对《Learning Python, Fourth Edition》等书中所涉及的文件基础知识的回顾,我们将从这些资源中获取与文件相关的一些概念的更多背景细节。 例如,迭代、上下文管理器和文件对象对 Unicode 编码的支持都会在学习过程中得到演示,但这些主题在此不再赘述。本章的目标是讲述足够多的文件故事,以便让你开始编写有用的脚本。
文件工具
外部文件是我们使用系统实用程序的核心。例如,测试系统可以从一个文件中读取输入,将程序结果存储在另一个文件中,并通过加载另一个文件来检查预期结果。即使是用户界面和面向互联网的程序,也可能从底层计算机的文件中加载二进制图像和音频剪辑。这是编程的核心概念。
在 Python 中,内置的open 函数是脚本用来访问底层计算机系统上文件的主要工具。由于该函数是 Python 语言的固有组成部分,您可能已经熟悉了它的基本工作原理。调用open 函数时,它会返回一个新的 文件对象,该文件对象与外部文件相连;该文件对象有一些方法,可以将数据传入或传出文件,并执行各种与文件相关的操作。open 函数还为底层文件系统提供了一个可移植的接口--它在 Python 运行的每个平台上都以相同的方式工作。
Python 内置的其他与文件相关的模块允许我们做一些事情,比如操作基于描述符的低级文件 (os);复制、删除和移动文件及文件集合 (os 和shutil);按键值在文件中存储数据和对象 (dbm 和shelve);访问 SQL 数据库 (sqlite3 和第三方附加组件)。其中后两个类别与数据库主题有关,将在第 17 章中讨论。
在本节中,我们将简要介绍内置的文件对象,并探讨一些与文件相关的高级主题。像往常一样,您应该查阅 Python 的库手册或参考书,如《Python Pocket Reference》,以了解更多细节和方法,我们在这里没有篇幅介绍。请记住,为了获得快速的交互式帮助,您还可以在打开的文件对象上运行dir(file) 来查看包括方法在内的属性列表;help(file) 获取一般帮助;以及help(file.read) 获取特定方法的帮助,如 ,尽管 3.1 中的文件对象实现为 提供的信息少于库手册和其他资源。read help
Python 3.X 中的文件对象模型
就像我们在第 2 章中提到的字符串类型一样,Python 3.X 中的文件支持也比过去丰富了一些。正如我们前面提到的,在 Python 3.X 中str 字符串总是表示 Unicode 文本 (ASCII 或更宽),而bytes 和bytearray 字符串表示原始二进制数据。Python 3.X 对包含文本和二进制数据的文件进行了类似和相关的区分:
文本文件 包含 Unicode 文本。在脚本中,文本文件内容始终是
str字符串--字符序列(技术上称为 Unicode "码位")。文本文件默认执行本章所述的行尾自动转换,并自动将 Unicode 编码应用于文件内容:根据提供的或默认的编码名称,在传输到文件或从文件传输到文件时,将原始二进制字节编码为 Unicode 编码并解码为 ...