7.1. 文件系统操作
Python 标准库包含了大量用于处理系统文件,构建和解析文件名以及检查文件内容的工具。
处理文件的第一步就是要确定待处理文件的名称。Python 将文件名称表现为一个简单的字符串,同时也提供了标准的,跨平台的组件 os.path
来构建他们。
pathlib
模块提供了一个面向对象的API用于处理系统路径。比起 os.path
它更方便,因为它在更高的抽象级别上运行。
使用来自模块 os
的 listdir()
查看目录内容列表,或者使用 glob
查找匹配指定模式的文件。
被 glob
模块用来查找文件的模式同样可以被 fnmatch
模块使用,因此可以在其他上下文中使用。
在文件的名称被确定之后,可以用 os.stat()
或者 stat
常量检查文件的其他特性,例如权限和大小。
当一个应用需要随机访问文件内容时, linecache
模块可以很容易地按照行号读取内容。但是由于该文件的内容被缓存在内存中,因此要格外小心内存的消耗。
tempfile
模块对于创建临时文件来存储数据的情况是非常有用的。它提供了安全可靠的创建临时文件和目录的类。文件或者目录名称保证是唯一的,由于包含了随机组件因此它们不会被容易猜出。
经常有这种情况,程序需要将文件当做一个整体来处理,而不用处理文件的内容。 shutil
模块提供了一系列高级的文件操作,例如复制文件和目录,解压缩文件等。
filecmp
模块通过查看它们包含的字节来比较文件或者目录,因此,它们的格式丝毫不影响比较结果。
内建的 file
类可以用于读写本机上的可见文件。当一个程序读写大文件时,它的性能会下降很多,因为这期间涉及到多次从磁盘到内存的数据复制。使用 mmap
模块可以告诉操作系统使用其虚拟内存将文件内容直接映射到程序可访问的内存中,避免操作系统和 file
对象内部缓冲区之间的数据复制。
使用了 ASCII 中不可用字符的文本数据通常以 Unicode 格式保存。由于标准的 file
操作将文件的每个字节都表示为一个字符,因此当读取多字节的 Unicode 文本数据时需要额外的处理。codecs
模块可以自动地进行编码和解码,因此,在很多情况下都可以使用非 ASCII 文件,而不用对程序做任何修改。
io
模块对于用来实现 Python 的基于文件的输入输出的类提供了访问权限。对于依赖文件读写数据的测试代码, io
模块提供了一个类似文件的内存流对象,但是不会驻留在磁盘中。
- os.path --- 跨平台的文件名操作
- pathlib --- 文件路径对象
- glob --- 文件名规则匹配
- fnmatch --- Unix 风格的 Glob 规则匹配
- linecache --- 高效率文件读取
- tempfile --- 临时文件对象
- shutil --- 高阶文件操作
- filecmp --- 文件对比
- mmap --- 内存映射模块
- codecs --- 字符编码和解码
- io --- 文本、二进制和原生流的 I/O 工具
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。