4.4.1 通过os.path获取目录和文件属性

我们可以通过Python核心模块里的os.path相关方法获取目录和文件属性,并在此基础上做进一步操作。在表4.2里,我们列出了其中的常用方法。

表4.2 os.path模块里目录和文件的相关方法

我们在D盘里创建一个名为1的文件夹,在其中创建一个名为HelloWorld.txt的文件,在如下的OsPathFuncDemo.py范例中,我们能用os.path相关的方法获取上述文件的信息。


01 # coding=utf-8
02 import os
03 print(os.path.abspath('d:\\1')) # d:\1
04 print(os.path.abspath('d:\\2')) # 如果目录不存在,也会返回d:\2
05 print(os.path.exists('d:\\1')) # True
06 print(os.path.exists('d:\\2')) # False
07 # 如下语句输出d:\1\HelloWorld.txt
08 print(os.path.abspath('d:\\1\\HelloWorld.txt'))
09 # 如下输出d:\1
10 print(os.path.dirname('d:\\1\\HelloWorld.txt'))
11 print(os.path.isfile('d:\\1\\HelloWorld.txt')) # True
12 print(os.path.isfile('d:\\1')) # False
13 print(os.path.isdir('d:\\1')) # True
14 print(os.path.isdir('d:\\1\\1.txt')) # False
15 # 如下输出 ('d:\\1', 'HelloWorld.txt')
16 print(os.path.split('d:\\1\\HelloWorld.txt'))

在第2行里,通过import语句引入了os模块,之后就可以用os.path里的相关方法了。

在第3行和第4行里,我们分别输出了两个文件夹目录的绝对路径,差别在第3行的文件夹存在而第4行的不存在,但是abspath方法不会去判断是否存在,仅会输出绝对路径。如果需要判断,则可以通过第5行和第6行的exists方法(这两句话分别会输出True和False)。

在第8行里,通过abspath输出文件的绝对路径,和之前文件夹绝对路径不同,文件的绝对路径包括目录名和文件名,而在第10行里则是通过dirname输出文件的路径。

在第11行到第14行的代码里,分别通过isfile和isdir方法判断参数所指定的是否是文件或者是路径:对于isfile方法,如果参数是文件则返回True;对于isdir方法,如果参数是路径则返回True。

在一些项目的实际场景里,需要从文件的绝对路径里提取路径名和文件名,所以可以像第16行那样通过split返回一个元组,其中包含路径和文件名的信息。