os.path相关函数介绍

时间:2021-09-13 23:15:24

os.path相关函数介绍

首先导入相关模块

#启动idle 当前所在的路径为C:\\Python27,不同电脑可能不一样
import os.path as op #把os.path 别名为 op

abspath(path) 返回路径的绝对路径

>>> op.abspath('.') #查看当前路径的绝对路径
'C:\\Python27'

>>> op.abspath('..')#查看父路径的绝对路径
'C:\\'

>>> op.abspath('./Lib/Bastion.py') #查看文件的
'C:\\Python27\\Lib\\Bastion.py'

>>> op.abspath('./Lib/') #查看目录的
'C:\\Python27\\Lib'

basename(p) 返回路径的最后一部分(win为最后一个/后的内容)

#使用相对路径
>>> op.basename('./Lib')
'Lib'

>>> op.basename('./Lib/Bastion.py')
'Bastion.py'
>>> op.basename('./Lib/') #注意这里/后面没有内容返回的是空串
>''
#使用绝对路径
>>> op.basename('C:\\Python27\\NEWS.txt')
'NEWS.txt'

dirname(p)与basename(p)相对 返回 最后一个/之前的路径

#相对路径返回的也是相对路径
>>> op.dirname('./Lib/')
'./Lib'
>>> op.dirname('./Lib')
'.'

#要想获得绝对路径
>>> op.abspath(op.dirname('./Lib/'))
'C:\\Python27\\Lib'

#绝对路径返回的也是绝对路径
>>> op.dirname('C:\\Python27\\NEWS.txt')
'C:\\Python27'

commonprefix(m)返回一组路径的,最大相同部分

>>> op.commonprefix(["./a/b/c/d", "./a/b/c"])
'./a/b/c'

>>> op.commonprefix(["./a/b/c.txt", "./a/b/c.txt"])
'./a/b/c.txt'

exists(path)检查路径是否存在

>>> op.exists("./a/b/c/d")
False
>>> op.exists('C:\\Python27\\NEWS.txt')
True

与linux差不多的函数
getatime(filename),getctime(filename),getmtime(filename)

#获取访问时间
>>> op.getatime("c:\\Python27\\NEWS.txt")
1487396615.0195312
#获取更改权限的时间
>>> op.getctime("c:\\Python27\\NEWS.txt")
1481978046.0
#获取更改时间
>>> op.getmtime("c:\\Python27\\NEWS.txt")
1481978046.0

getsize(filename)获取文件 或 文件夹的大小

>>> op.getsize("c:\\Python27\\")
4096L
>>> op.getsize("c:\\Python27\\NEWS.txt")
474595L

isabs(s)
检查路径是否是绝对的
isdir(s)
检查路径是否是目录
idfile(s)
检查路径是否是文件
islink(path)
检查路径是否是链接(win 快捷方式)
ismount(path)
检查路径是否是挂载点

>>> op.isabs('.')
False

>>> op.isabs('C:\\')
True

join(path, *paths) 将至少两个路径以路径分割符连接

>>> op.join('a','b')
'a\\b'
>>> op.abspath('a\\b')
'C:\\Python27\\a\\b'

normacase(s)
标准化一个路径,使所有字符小写,所有的\ 转换成/
normpath(path)
标准化一个路径,将所有的//转化为\

#在linux下的路径转为 win 下的路径时用到
>>> op.normcase('C:/Python27/a/b')
'c:\\python27\\a\\b'

>>> op.normpath('c://python27//a//b')
'c:\\python27\\a\\b'

split(pathname)
将路径分割为(head, tail) tail是最后一个/后面的字符串,如果/后面没有字符串 tail 可能为空

>>> op.split(r'a\b\c\d')
('a\\b\\c', 'd')

expanduser(path) ~会被替换成用户目录

>>> op.expanduser("~/hehe")
'/Users/jianglei/hehe'

expandvars(path)

#如果你在shell里设置如下
$name=jianglei
$host=localhost
op.expandvars(/$name/$host) #会返回/jianglei/localhost

以下函数没有明白待更新
splitdrive
splittext
splitunc
walk