Python的os.path子模块

版权声明:版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/swinfans/article/details/85548864

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指向的文件分割为包含dirnamebasename的元组。

    >>> 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) 判断path1path2指向的是否是同一个文件。

    一个文件的软链接、硬链接以及这个文件本身,都被当作同一个文件。

    >>> 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) 测试两个打开的文件对象是否引用同一个文件

    fd1fd2表示文件描述符。不需要fd1fd2的值相等,只要他们引用同一个文件,则返回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]) 计算从startpath的相对路径

    >>> 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环境变量的分隔符。

猜你喜欢

转载自blog.csdn.net/swinfans/article/details/85548864