os模块下的path子模块主要用来获取文件的属性。下面列举一些常用的方法。
-
os.path.abspath(path)返回path的绝对路径。在类Unix操作系统下,使用这个方法总是能返回一个路径的绝对路径,而且这个绝对路径是真实存在的,但是在windows平台下,这个方法的返回值与当前所在的驱动器有关。即返回值为驱动器号加上
path相对于当前驱动器的根目录的绝对路径。通过下面的例子应该就能看明白了:>>> os.chdir('c:\\') >>> os.getcwd() 'c:\\' >>> home_path = os.getenv('HOMEPATH') >>> home_path '\\Users\\Neo Chen' >>> os.path.abspath(home_path) 'c:\\Users\\Neo Chen' >>> os.chdir('D:\\') >>> os.getcwd() 'D:\\' >>> os.path.abspath(home_path) 'D:\\Users\\Neo Chen' -
os.path.exists(path)判断path指向的文件是否存在。若
path指向的文件存在,返回True,否则返回False。注意:当
path指向的是一个软链接时,若这个软链接指向的文件已经被删除,将返回False。 -
os.path.lexists(path)判断path指向的文件是否是存在。与
os.path.exists(path)相似,但不同的是,当path指向的文件是一个软链接时,无论该软链接指向的文件是否已经被删除,均返回True。 -
os.path.basename(path)返回path指向的文件的文件名。若
path指向的是一个目录,则返回一个空字符串。>>> os.path.basename('p1/c1/1.txt') '1.txt' >>> os.path.basename('p1/c1') '' -
os.path.dirname(path)返回path所指向的文件的路径名。>>> os.path.dirname('p1/c1/1.txt') 'p1/c1' -
os.path.getsize(path)返回path所指向的文件的大小。 -
os.path.isabs(path)判断path是否为绝对路径。判断的依据是,只要
path的首个字符是os.path.sep的返回值,就返回True,否则返回False,即使path是不存在的路径。>>> os.path.isabs('.') False >>> os.path.isabs(os.path.abspath('.')) True >>> os.path.isabs('/Users') True >>> os.path.isabs('/notExists') # 即使指定的路径不存在,只要首个字符是 -
os.path.isfile(path)判断path指向的是否为一般文件。若是,则返回
True,若指向的文件不存在或者不是一个一般文件,则返回False。>>> os.listdir() ['.DS_Store', 'hello_world.py', 'test'] >>> os.path.isfile('test') False >>> os.path.isfile('hello_world.py') True >>> os.path.isfile('notExist.txt') False >>> os.path.isfile('/dev/null') False -
os.path.isdir(path)判断path指向的是否为一个目录。若是,则返回
True,若指向的文件不存在或者不是一个目录,则返回False。 -
os.path.islink(path)判断path指向的文件是否为软链接。若是,则返回
True,若指向的文件不存在或者不是一个软链接,则返回False。 -
os.path.ismount(path)判断path指向的文件是否为挂载点。若是,则返回
True,若指向的文件不存在或者不是一个挂载点,则返回False。>>> os.path.ismount('/') True >>> os.path.ismount('/Users') False -
os.path.join(path1[, path2[,...]])将路径和文件名合并成一个路径。>>> os.path.join('/', 'Users', 'user1', '2.txt') '/Users/user1/2.txt' -
os.path.realpath(path)返回path所表示的真实路径。>>> os.path.realpath('.') '/Users/user1' >>> os.path.realpath('..') '/Users' -
os.path.split(path)将path指向的文件分割为包含dirname和basename的元组。>>> os.path.split('project/src/hello_world.py') ('project/src/', 'hello_world.py') -
os.path.splitext(path)将path分割为包含路径名和文件拓展名的元组。>>> os.path.splitext('project/src/hello_world.py') ('project/src/hello_world', '.py') -
os.path.expandvars(path)使用环境变量的值替换path中的$name或${name}>>> os.path.expandvars('$LANG') 'zh_CN.UTF-8' -
os.path.expanduser(path)将路径中的~替换成实际的路径。>>> os.path.expanduser('~/StudyWP') /Users/tester1/StudyWP' -
os.path.samefile(path1, path2)判断path1和path2指向的是否是同一个文件。一个文件的软链接、硬链接以及这个文件本身,都被当作同一个文件。
>>> os.listdir() ['test.py', 'test'] >>> os.system('cp test.py test1.py') 0 >>> os.link('test.py', 'test/hlink.py'). # 创建‘test.py’的硬链接 >>> os.symlink(os.path.abspath('test.py'), test.slink.py)。 # 创建‘test.py’的软链接 >>> os.system('ls test/*') test/hlink.py test/slink.py 0 >>> os.path.samefile('test.py', 'test.slink.py') # 判断原文件和其软链接是否引用同一个文件 True >>> os.path.samefile('test.py', 'test/hlink.py') # 判断原文件和其硬链接是否引用同一个文件 True >>> os.path.samefile('test/hlink.py', 'test/slink.py') # 判断原文件的软链接和硬链接是否引用同一个文件 True >>> os.path.samefile('test.py', 'test1.py') # 判断复制自‘test.py’ 的文件‘test1.py’ 是否为同一文件 False -
os.path.sameopenfile(fd1, fd2)测试两个打开的文件对象是否引用同一个文件fd1和fd2表示文件描述符。不需要fd1和fd2的值相等,只要他们引用同一个文件,则返回True,否则返回False。>>> os.listdir() ['test.py', 'test'] >>> os.system('cp test.py test1.py') 0 >>> os.link('test.py', 'test/hlink.py'). # 创建‘test.py’的硬链接 >>> os.symlink(os.path.abspath('test.py'), test.slink.py)。 # 创建‘test.py’的软链接 >>> os.system('ls test/*') test/hlink.py test/slink.py 0 >>> fd1 = os.open('test.py', os.O_RDONLY) >>> fd2 = os.open('test/hlink.py', os.O_RDONLY) >>> fd3 = os.open('test/slink.py', os.O_RDONLY) >>> fd4 = os.open('test1.py', os.O_RDONLY) >>> os.path.sameopenfile(fd1, fd2) True >>> os.path.sameoenfile(fd1, fd3) True >>> os.path.sameopenfile(fd2, fd3) True >>> os.path.sameopenfile(fd1, fd4) False -
os.path.samestat(stat1, stat2)判断两个stat信息是否相同引用自同一个文件>>> os.listdir() ['test.py', 'test'] >>> os.system('cp test.py test1.py') 0 >>> os.link('test.py', 'test/hlink.py'). # 创建‘test.py’的硬链接 >>> os.symlink(os.path.abspath('test.py'), test.slink.py)。 # 创建‘test.py’的软链接 >>> os.system('ls test/*') test/hlink.py test/slink.py 0 >>> st1 = os.stat('test.py') >>> st2 = os.open('test/hlink.py') >>> st3 = os.open('test/slink.py') >>> st4 = os.open('test1.py') >>> os.path.samestat(st1, st2) True >>> os.path.samestat(st1, st3) True >>> os.path.samestat(st2, st3) True >>> os.path.samestat(st1, st4) False -
os.path.normcase(path)转换大小写和路径分隔符。类linux操作系统下将原样返回
path,Windows操作系统下把path中的/替换为\\,大写字母转变为小写字母。>>> os.path.normcase('/Users/test1/Desktop') '\\users\\test1\\desktop' -
os.path.normpath(path)规范path中的字符串形式。 -
os.path.splitdrive(path)分割驱动器号及路径,并返回包含驱动器号和路径的元组。注意:类linux操作系统下,返回的元组的第一个元素是空字符串,第二个元素是
os.path.normpath(path)类linux操作系统下:
>>> os.path.splitdrive('C:\\Windows\system32') ('', 'C:\\windows\\system32')Windows操作系统下:
>>> os.path.splitdrive('c:\\Windows\system32') ('c:', '\\windows\\system32') -
os.path.relpath(path[, start])计算从start到path的相对路径>>> os.path.relpath('/Users/tester1/StudyWP/test', '/Users/tester1') 'StudyWP/test' >>> os.path.relpath('/Users/tester1/StudyWP/test', '/Users') tester1/StudyWP/test -
os.path.atime(path)返回path指定的文件的最后访问时间。 -
os.path.mtime(path)返回path指定的文件的最后修改时间。 -
os.path.ctime(path)返回path指定的文件的创建时间。 -
os.path.sep返回当前系统的路径分隔符。 -
os.path.pathsep返回PATH环境变量的分隔符。
本文详细介绍了Python中os模块下的path子模块的功能和用法,包括获取文件绝对路径、判断文件存在性、获取文件名、获取文件路径名、获取文件大小、判断路径类型、路径合并、获取真实路径、路径分割、路径规范化、获取相对路径、获取文件时间戳和路径分隔符等方法。
2483

被折叠的 条评论
为什么被折叠?



