在Python 3.x中,文本(text)永远是Unicode,以str表示,二进制数据(binary)以bytes和bytearray表示。str和bytes之间有明确的界限,通过特定的编码方式相互转换,如utf8, utf16, ascii, latin1等。类似的,文件有两种格式:text file和binary file。Python提供两种方式访问文件:内置(build-in)的文件对象和os模块中文件工具。
内置的文件对象拥有一整套文件操作的相关函数:open, close, read, write, readline, readlines, writelines。相比之下os模块提供的文件工具更为接近底层一些,如os.open, os.read, os.write, os.lseek。这些函数通过文件的描述符(descriptor)来操作文件。除此之外,os模块还提供其他文件函数,诸如os.chmod, os.rename, os.remove, os.stat。
通过文件对象提供的seek方法,或os模块提供的os.lseek可以实现文件的随即访问。
事实上内置文件对象和os模块描述符文件是相互关联的:文件对象依赖的文件系统只不过是在基于描述符的文件之上增加了一层逻辑层。
在Python中访问和遍历目录和文件路径的相关的方法有四种:
- os.popen+shell command(dir in Win, ls in Unix)
- glob模块提供的glob方法
- os模块提供的listdir方法
- os模块提供walk方法(这可是遍历目录的一个利器)