9.10 相关模块
还有大量的其他模块与文件和输入/输出有关,它们中的大多数都可以在主流平台上工作。表9.7列出了一些文件相关的模块。
fileinput模块遍历一组输入文件,每次读取它们内容的一行,类似Perl语言中的不带参数的“<>”操作符。如果没有明确给定文件名,则默认从命令行读取文件名。
glob和fnmatch模块提供了老式Unix shell样式文件名的模式匹配,例如使用星号(*)通配符代表任意字符串,用问号(?)匹配任意单个字符。
核心提示:使用 os.path.expanduser()的波浪号(~)进行扩展
虽然glob和fnmatch提供了 Unix样式的模式匹配,但它们没有提供对波浪号(用户目录)字符,〜的支持。你可以使用os.path.expanduser()函数来完成这个功能,传递一个带波浪号的目录,然后它会返回对应的绝对路径。这里是两个例子,分别运行在Unix和Win32环境下:
另外Unix衍生系统还支持 “~user”这样的用法,表示指定用户的目录,还要注意Win32版本函数没有使用反斜杠来分隔目录路径。
gzip和zlib模块提供了对zlib压缩库直接访问的接口。gzip模块是在zlib模块上编写的,不但实现了标准的文件访问,还提供了自动的gzip压缩/解压缩bz2类似于gzip,用于操作bzip压缩的文件。
程序员可以通过1.6中新增的zipfile模块创建,修改和读取zip归档文件。(tarfile文件实现了针对tar归档文件的相同功能)。在2.3版本中,Python加入了导入归档zip文件中模块的功能。更多细节请参阅12.5.7小节。
shutil模块提供高级的文件访问功能,包括复制文件、复制文件的访问权限、递归地目录树复制等。
tempfile模块用于生成临时文件(名)。
在关于字符串一章中,我们介绍了 StringlO模块(和它的C语言版本cStringIO),并且介绍了它是如何在字符串对象顶层加入文件操作接口的。这个接口包括文件对象的所有标准方法。
我们在前面永久性储存一节(9.9节)中介绍的模块还有文件和字典对象混合样式的例子。
其他的Python类文件对象还有网络和文件socket对象(socket模块),用于管道连接的popen*()文件对象(os和popen2模块),用于底层文件访问的fdopen()文件对象(os模块),通过URL (UniformResource Locator,统一资源定位符)建立的到指定Web服务器的网络连接(urllib模块)等。需要注意的是并非所有的标准文件方法都能在这些对象上实现,同样的,这些对象也提供了一些普通文件没有的功能。
具体内容请参考这些模块的相关文档,你可以在下边这些地址中找到关于file()/open(),文件,文件对象的更多信息,(这里我们还建议读者参考Python标准库,译者注)
http://docs.python.org/lib/built-in-flincs.html
http://docs.python.org/lib/bltin-file-objects.html