python os.path

时间:2023-03-09 16:43:56
python os.path

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(toptopdown=Trueonerror=Nonefollowlinks=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).