python路径函操作
#判断是否为文件
os.path.isfile
#判断是否为目录
os.path.isdir
#返回文件名
os.path.basename(path)
#返回文件目录
os.path.dirname(path)
#判断文件、目录是否存在
os.path.exists(path)
#拼接路径, 以系统分隔符 (os.sep)拼接
os.path.join(path1,path2)
#规范化路径,将反斜杠转为斜杠,字母转为小写
os.path.normcase('c:\Test') #'c:/test'
#将路径分为一个元组,以最后一个斜杠为分界线,如果最后一个字符为斜杠,那么返回的第2个元素为空
os.path.split('c:/1/') #('c:/1', '')
os.path.split('c:/1') #('c:/', '1')
os.path.split('c:/1/1.txt') #('c:/1', '1.txt')
#将路径转换为一个元祖,如果为目录则第二个元素为空,如果文件则第二个元素为文件扩展名
os.path.splitext('c:/1') #('c:/1, '')
os.path.splitext('c:/1/1.txt') #('c:/1', '.txt')
#获得模块所在的路径的,这可能得到的是一个相对路径
__file__
#获取当前执行主脚本文件路径
sys.argv[0]
#获取文件绝对路径
os.path.realpath(__file__) #即使创建了软连接,realpath还可以拿到真正对应的文件
os.path.abspath(__file__)
#遍历目录及子目录
#path:待遍历根目录 visit(arg, dirname, names) 遍历目录的函数 dirname目录名,names目录下文件名(也包含目录)列表
#os.path.walk(path, visit, arg)
#os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别
假设目录结构是:
/home/work | [dir] getpath | [file] path.py [dir] sub | [file] sub_path.py
在/home/work/下面执行python getpath/path.py,path.py调用了sub_path.py
sub_path.py里面与各用法对应的值为:
- os.getcwd() “/home/work/”,起始执行目录
- sys.path[0]或sys.argv[0] “/home/work/getpath”,是初始执行的脚本的所在目录
- os.path.split(os.path.realpath(__file__))[0] “/home/work/getpath/sub”,是__file__所在文件sub_path.py的所在目录