返回path的绝对路径名node
>>> os.path.abspath(".") 'C:\\Users\\admin\\Desktop\\PycharmProjects\\python_demo'
返回文件名,等同于调用os.path.split(path)
返回值的第二个元素。python
>>> os.path.basename("/usr/bin/") '' >>> os.path.basename("/usr/bin") 'bin'
python的basename和Unix shell的basename指令是有区别的:mysql
[root@localhost ~]# basename "/usr/bin" bin [root@localhost ~]# basename "/usr/bin/" bin
返回序列参数paths中最长的公共子路径。若是paths为空,或者同时包含绝对路径和相对路径,抛出ValueError
异常。
与os.path.commonprefix(list)
不一样,此函数的返回值必定是一个有效路径。git
>>> os.path.commonpath(["/home/admin", "/home/admin/.ssh"]) '/home/admin' >>> os.path.commonpath(["/home/admin1", "/home/admin2"]) '/home'
返回list中全部路径的最大长度的公共路径前缀,若是list为空返回空字符串。其返回值多是一个无效路径。sql
>>> os.path.commonprefix([".", "/root"]) '' >>> os.path.commonprefix(["/home/admin1", "/home/admin2"]) '/home/admin'
返回目录名,等同于调用os.path.split(path)
返回值的第一个元素。shell
>>> os.path.dirname("/usr/bin/") '/usr/bin' >>> os.path.dirname("/usr/bin") '/usr'
判断path是否存在。若是path是一个已存在的路径或一个打开的文件描述符(int),返回True。
在某些平台,即便path真实存在,但若是没有针对path执行os.stat()
的权限,仍有可能返回False。
若是path是一个受到破坏的软连接(原始文件/文件夹被删除),返回False。windows
判断path是否存在。若是path是一个已存在的路径,返回True。
若是path是一个受到破坏的软连接(原始文件/文件夹被删除),返回True。centos
返回把path中包含的"~"和"~user"转换成用户目录后的路径。app
Unix平台:
对于path中的~
,若是设置了环境变量HOME
,使用HOME
的值替换;不然使用当前用户的用户主目录替换;
对于path中的~user
,直接使用user的用户主目录替换ssh
>>> os.path.expanduser("~/local/mysql") '/root/local/mysql' >>> os.path.expanduser("~admin/local/mysql") '/home/admin/local/mysql'
Windows平台:
对于path中的~
,使用环境变量HOME
或USERPROFILE
的值,或HOMEPATH
和HOMEDRIVE
的值的组合替换;
对于path中的~user
,将替换"~"的路径的最后一个目录组件剥离,使用user替换
# 查看环境变量 (python) D:\>echo %HOME% %HOME% (python) D:\>echo %USERPROFILE% C:\Users\admin (python) D:\>echo %HOMEPATH% \Users\admin (python) D:\>echo %HOMEDRIVE% C:
>>> os.path.expanduser("~\\local") 'C:\\Users\\admin\\local' # 将C:\\Users\\admin中的admin替换为anyuser >>> os.path.expanduser("~anyuser\\local") 'C:\\Users\\anyuser\\local'
若是扩展失败或path未以"~"为前缀,不作改动直接返回。
扩展path中的环境变量并返回。path中$NAME
和${NAME}
格式的子串将被对应的环境变量替换(不一样平台存在是否区分大小写的问题)。格式错误或变量不存在,将直接返回。
在windows中还包括%NAME%
的形式。
最后访问时间。返回值是自epoch时间算起的浮点值,单位为秒。若是path不存在或没法访问将抛出异常。
>>> getatime("/root/demo.txt") 1545345643.4549878
最后修改时间。返回值是自epoch时间算起的浮点值,单位为秒。若是path不存在或没法访问将抛出异常。
在Unix系统,表示最近一次修改元数据的时间;在Windows系统,表示建立时间。返回值是自epoch时间算起的浮点值,单位为秒。若是path不存在或没法访问将抛出异常。
以字节为单位返回路径大小。若是path不存在或没法访问将抛出异常。
若是path指向一个文件夹,返回值不表明该文件夹真实占用的大小。
判断是否为绝对路径。
判断是否为文件。符号连接断定为True,受到破坏断定为False
[root@localhost ~]# ll 总用量 0 lrwxrwxrwx. 1 root root 8 12月 21 07:32 demo.link -> demo.txt -rw-r--r--. 1 root root 0 12月 21 07:31 demo.txt lrwxrwxrwx. 1 root root 10 12月 21 07:32 sample.link -> sample.txt # 原文件被删除致使软连接受到破坏 >>> isfile("/root/demo.link") True >>> isfile("/root/sample.link") False
判断是否为文件夹。符号连接断定为True,受到破坏断定为False
判断是否为符号连接,即便是受到破坏的符号连接,也会返回True。
若是Python运行环境不支持符号连接,返回False。
判断是否为挂载点。
[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 18G 1.7G 16G 10% / devtmpfs 480M 0 480M 0% /dev tmpfs 492M 0 492M 0% /dev/shm tmpfs 492M 7.4M 485M 2% /run tmpfs 492M 0 492M 0% /sys/fs/cgroup /dev/sda1 497M 157M 340M 32% /boot tmpfs 99M 0 99M 0% /run/user/0 >>> ismount("/dev") True
对于Windows系统,磁盘符根目录及UNC路径的共享目录老是挂载点:
>>> ismount("c:/") True >>> ismount("//DESKTOP-BV17H6X/Users/") True
路径拼接。
将path与paths中的非空路径组件使用系统分隔符拼接。若是最后一个组件是空字符串,返回值将以分隔符结尾:
>>> join("/root", "a", "b", "", "c") '/root/a/b/c' >>> join("/root", "a", "b", "c", "") '/root/a/b/c/'
若是paths中任意一个组件是绝对路径,将直接以该组件开始进行拼接:
>>> join("/root", "a", "/b", "c") '/b/c'
在Windows中,若是paths中出现不含磁盘符的绝对路径,不会重置磁盘符:
>>> join("c:/root", "/foo") 'c:/foo'
若是paths中出现含磁盘符的,直接从该路径开始进行拼接:
>>> join("c:/root", "e:/root", "/foo") 'e:/foo'
每一个磁盘符有一个当前工做目录,下例表示相对于该磁盘当前工做目录的路径foo(e:foo
而非e:\\foo
):
>>> os.path.abspath(join("e:", "foo")) 'E:\\git_project\\foo'
规范路径名大小写。在Unix和Mac OS X系统,直接返回path;在大小写不敏感的系统(如Windows),会将path转换为小写字母。此外Windows还会将/
转换为\\
。
规范路径名中的多余分隔符以及上级引用,如A//B
, A/B/
, A/./B
and A/foo/../B
将所有转换为A/B
。Windows系统还会将/
转换为\\
。
将包含符号连接的path转换为真实路径名称。
返回相对于当前工做目录或指定的start目录的相对路径。
判断path1和path2是否指向同一个文件或目录,取决于设备号和i-node。若是调用os.stat()
失败将抛出异常。
判断文件描述符fp1和fp2是否指向同一个文件或目录。
判断状态元组stat1和stat2是否指向同一个文件或目录,参数多是os.fstat()
、os.lstat
或os.stat()
的返回值。
将path拆分为(head, tail)
的元组形式。
tail部分老是不包含斜杠,若是path以斜杠结尾,tail将为空字符串;尾部的斜杠也会从head中去除,除非path是根路径:
>>> split("/home/admin/.ssh/") ('/home/admin/.ssh', '') >>> split("/") ('/', '')
若是path不包含斜杠,head部分将为空字符串:
>>> split("home") ('', 'home')
若是path为空字符串,head和tail都将为空:
>>> split("") ('', '')
将path拆分为(drive, tail)
的元组形式。
在不使用磁盘符的系统,drive老是为空字符串;在Windows系统,会将path分割为UNC共享点/磁盘驱动,及其相对路径。
# 包含磁盘符的路径 >>> splitdrive("c:/dir") ('c:', '/dir') # UNC路径,分割后的drive包含主机名和共享点(到第四个分隔符但不包括第四个) >>> splitdrive("//servername/sharename/directory/filename") ('//servername/sharename', '/directory/filename')
将path拆分为(root, ext)
的元组形式。
ext为空字符串或者以.
打头且只包含1个.
的字符串:
>>> splitext("/home/admin/.ssh/") ('/home/admin/.ssh/', '') >>> splitext("/home/admin/.ssh/id_rsa.ppk") ('/home/admin/.ssh/id_rsa', '.ppk') # 若是path以'.'打头,ext将为空字符串 >>> splitext('.cshrc') ('.cshrc', '')
判断是否能使用任意Unicode字符串做为文件名(在文件系统强加的限制内)