os.path 提供了一些处理文件路径的函数.
os.path.abspath(path)
返回绝对路径, 在大多数平台上, os.path.abspath(path) == os.path.normpath(os.path.join(os.getcwd(), path))
os.path.basename(path)
返回路径 basename, 是 os.path.split(path) 返回元组的第二项
>>> os.path.basename("/foo/bar/")
""
>>> os.path.basename("/foo/bar")
"bar"
os.path.commonprefix(list)
返回列表中最长的路径前缀, 如果列表为空则返回空字符串, 由于是 character-by-character, 可能会返回非法前缀
>>> os.path.commonprefix([])
""
>>> os.path.commonprefix(["/usr/local/etc/redis.conf", "/usr/local/etc/rc.d/init.d/", "/usr/local/except/"])
"/usr/local/e"
os.path.dirname(path)
返回目录, 是 os.path.split(path) 返回元组的第一项
os.path.exists(path)
路径是否存在, broken symbolic links 返回 False, 权限不够也会返回 False
>>> os.path.exists("/usr/local/etc/redis.conf")
True
>>> os.path.exists("/root/install.log") # /root/install.log really exists
False
os.path.lexists(path)
路径是否存在, broken symbolic links 返回 True, 权限不够返回 False
os.path.expanduser(path)
替换 path 中的 ~ 为 $HOME 或 `pwd`
os.path.getatime(path)
返回路径上一次访问时间
>>> os.path.getatime("auth.py")
1472808267.0
os.path.getmtime(path)
返回路径上一次修改时间
>>> os.path.getmtime("auth.py")
1471408453.0
os.path.getctime(path)
在类 Unix 系统中返回路径上一次 metadata 变更时间, os.path.getctime(path) == os.path.getmtime(path)
os.path.getsize(path)
Return the size, in bytes, of path. 如果 path 是目录, 返回值并不定于目录中文件的大小
os.path.isabs(path)
判断是否为绝对地址, 在类 Unix 系统中意味着路径以 / 开始
>>> os.path.isabs("/watchdog")
True
>>> os.path.isabs("watchdog")
False
os.path.isfile(path)
判断 path 是否是文件, 如果 path 是链接, 会追踪至文件, 如果文件存在则 True, 若不存在则 False, 对于一个是链接的 path, 会存在 os.path.isfile(path) 和 os.path.islink(path) 同时为 True 的情况
os.path.isdir(path)
判断 path 是否是目录, os.path.isdir(path) 和 os.path.islink(path) 可同时为 True
os.path.islink(path)
判断 path 是否是链接
os.path.ismount(path)
判断 path 是否是挂载点
os.path.join(path, *paths)
连接路径, 并没有觉得有多聪明
>>> os.path.join("home/", "home/work/", "watchdog")
'home/home/work/watchdog'
>>> os.path.join("home/", "/work/", "watchdog")
'/work/watchdog'
>>> os.path.join("home/", "work/", "watchdog")
'home/work/watchdog'
>>> os.path.join("/home/", "work/", "watchdog")
'/home/work/watchdog'
>>> os.path.join("/home/", "/work/", "watchdog")
'/work/watchdog'
>>> os.path.join("/home/", "/home/work/", "watchdog")
'/home/work/watchdog'
os.path.realpath(path)
返回真实路径, 链接会追踪至文件
os.path.relpath(path[, start])
返回当前目录或 start 开始的相对路径, 路径有效性不做判断
os.path.samefile(path1, path2)
如果 path1 和 path2 指向相同的目录或文件, 返回 True
os.path.sameopenfile(fp1, fp2)
如果 fp1 和 fp2 指向相同的文件, 返回 True
os.path.split(path)
将 path 拆分为 head 和 tail, tail 是最后一个 / 之后的内容, head 是最后一个 / 之前的内容
os.path.walk(path, visit, arg)
遍历path, Python 3 中被 os.walk 取代
os.walk(top, topdown=True, onerror=None, followlinks=False)
Generate the file names in a directory tree by walking the tree either top-down or bottom-up. For each directory in the tree rooted at directory top (including top itself), it yields a 3-tuple (dirpath, dirnames, filenames)
.
dirpath is a string, the path to the directory. dirnames is a list of the names of the subdirectories in dirpath (excluding '.'
and '..'
). filenames is a list of the names of the non-directory files in dirpath. Note that the names in the lists contain no path components. To get a full path (which begins with top) to a file or directory in dirpath, do os.path.join(dirpath,name)
.