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 模块提供了一个类似文件的内存流对象,但是不会驻留在磁盘中。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/pymotw/file-sys...

译文地址:https://learnku.com/docs/pymotw/file-sys...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~