路径操作
目录结构
os模块中的path对象(3.4版本之前)
- path属性os模块,from os import path
常用方法
- os.path.join(path,*paths)->str #拼接路径
from os import path p = path.join("a","b") p2 = path.join("e:/a/b","c") print(type(p),p) print(type(p2),p2)
- os.path.exists§->True|False #判断字符串路径或文件是否存在
- p 字符串路径
- os.path.split§->(路径,基名) #切割路径字符串,获取路径和基名
- os.path.dirname§->str路径 #获取路径字符串的路径
- os.path.basename§->str基名 #获取路径字符串的基名
- os.path.relpath(p )->str路径 #获取文件路径的相对路径
- 简单示例:
from os import path path.abspath(""),path.relpath('D:/MyPythonUse/Mypython/a/b')
- os.path.abspath§->str # 获取路径字符串的绝对路径
- os.path.abspath("") 和 os.path.abspath(".") 表示当前路径的绝对路径
- os.path.splitdrive§->(磁盘名,路径) #windows系统上使用,获取路径所在磁盘的盘符
- path.splitdrive(“c:/a/b/text.py”) #(‘c:’, ‘/a/b/text.py’)
- os.path.samefile(src,dst) #判断两个路径是否指向同一个文件
- os.path.normpath(p )->os.path #正常化路径,取消双斜杠
- os.path.normcase(p )->os.path #将路径大小写规范。
- 如果是linux系统或者Mac OS系统,不做处理
- 如果是windows系统上,将路径全部转换成小写,并将"/“转成”\\"
- 其他相关方法可以查看python API
- os.path.getatime(path)
- os.path.getsize(path) #获取文件大小
- os.path.isabs(path) #是否是绝对路径
- os.path.isdir(path) #判断路径是否是当前路径
pathlib模块中的Path对象(3.4版本开始使用)
- Path路径对象,属于pathlib模块,在python3.4版本后开始提供
from pathlib import Path
- Path类关系图
- Path类关系图
- Path(*pathsegments)->PosixPath|WindowsPath 根据路径创建Path对象
- pathsegments 路径字符串
- PosixPath 在linux下调用会返回PosixPath对象
- WindowsPath 在windows下调用会返回WindowsPath对象
- 初始化简单示例
from pathlib import Path p = Path() #当前目录 Path(.) Path("")都是表示当前目录 p = Path('a','b','c/d') #当前目录下的a/b/c/d p = Path("/etc") #表示跟下的etc目录
- 操作符号/
- 语法:
- Path对象/Path对象
- Path对象/字符串 或者 字符串 / Path对象
- 示例:
p = Path("c:/a/b") p = "d/e" / p/"g" #注意组合后为:WindowsPath('c:/a/b/g') 盘符前的不合法路径会被忽略 p2 = Path("c/d") p2 = "e/f"/ ("g/h"/p2)/"g" #WindowsPath('e/f/g/h/c/d/g') 注意括号和p2的位置
- 语法:
注意:WindowsPath和PosixPath的父类都是PurePath
- 路径的比较: 在windows中文件名称是不区分大小写的,为了方便判断路径是否一致可以使用路径对象Path来进行比较的路径大小
- PureWindowsPath(“fab”) == PureWindowsPath(“FaB”) #返回True
- PureWindowsPath(“c:”) < PureWindowsPath(“D:”) #返回True
- windows下演示
p1 = Path("c:") p2 = Path("D:") print(p1<p2) p3 = Path("c:/","a","b") #注意,使用盘符时,要带上/,或者后面的路径最前面带上/ p4 = Path("c:/a/b") print(p3==p4,p3,p4)
- linux系统中文件名是区分大小写,所以有:
- PurePosixPath(“fab”) == PurePosixPath(“FaB”) #返回False
- PurePosixPath(“fab”) == PurePosixPath(“FaB”) #返回False
Path中的全局方法
- cwd()->Path #获取当前工作路径
from pathlib import Path
p = Path("d:/a/b")
print(Path.cwd(),p.cwd(