python 实用代码
Pathlib
from pathlib import Path
path = Path(__file__)
# # 基本属性:
path.parts # 分割路径 类似os.path.split(), 不过返回元组: :('/', 'Users', 'jemes', 'workspace', '***', 'Controller', 'FaceFilter.py')
path.drive # 返回驱动器名称:
path.root # 返回路径的根目录 :/
path.anchor # 自动判断返回drive或root:/
res = path.parents # 返回所有上级目录的列表
for i in res:
print(i) # 输出如下:
# /Users/jemes/workspace/***/Controller
# /Users/jemes/workspace/***
# /Users/jemes/workspace
# /Users/jemes
# /Users
# /
path # 文件完整路径:/Users/jemes/workspace/***/Controller/FaceFilter.py
path.suffix # 文件后缀:.py
path.stem # 文件名不带后缀:FaceFilter
path.name # 带后缀的完整文件名:FaceFilter.py
path.parent # 路径的上级目录:/Users/jemes/workspace/***/Controller
res = path.parent.iterdir() # 遍历目录的子目录或者文件(必须是目录)
for i in res:
print(i) # 每个文件的绝对路径
path.resolve() # 返回绝对路径: /Users/jemes/workspace/***/Controller/FaceFilter.py
file = path.open() # 打开文件(支持with) 返回: <class '_io.TextIOWrapper'>
print(file.read()) # 读取文件内容
path.unlink() # 删除文件或目录(目录非空触发异常)
# 改变路径:
path.with_name('setup.txt') # 更改路径名称, 更改最后一级路径名 : /Users/jemes/workspace/mic-deepfake/Controller/setup.txt
path.with_suffix('.txt') # 更改路径后缀 /Users/jemes/workspace/mic-deepfake/Controller/FaceFilter.txt
path.with_suffix('') # 更改路径后缀 /Users/jemes/workspace/mic-deepfake/Controller/FaceFilter
# # 拼接路径
path.parent.joinpath('test.py') # 拼接路径: /Users/jemes/workspace/mic-deepfake/Controller/test.py
path.relative_to(path.parent.parent.__str__()) # 计算相对路径: Controller/FaceFilter.py
# 测试路径:
path.match('*.py') # 测试路径是否符合pattern: True
path.is_dir() # 是否是路径
path.is_file() # 是否是文件
path.is_absolute() # 是否是绝对路径
path.is_reserved() # 是否是预留路径
path.exists() # 判断路径是否真实存在
# 其他方法:
path.cwd() # 返回当前目录的路径对象: /Users/jemes/workspace/mic-deepfake/Controller
path.home() # 返回当前用户的home路径对象: /Users/jemes
path.stat() # 返回路径信息, 同os.stat(): os.stat_result(st_mode=33188, st_ino=40639892, st_dev=16777221, st_nlink=1, st_uid=501, st_gid=20, st_size=4030, st_atime=1589444228, st_mtime=1589444223, st_ctime=1589444223)
path.chmod(777) # 更改路径权限, 类似os.chmod()
path.expanduser() # 展开~返回完整路径对象: /Users/jemes/workspace/mic-deepfake/Controller/FaceFilter.py
Path(path.parent.__str__() + '/Test').mkdir() # 创建目录
path.rename("test.py") # 当前目录下重命名test.py
path.rename("/var/tmp/test.py") # 非当前重命名路径
path.rename("../test.py") # 相对路径
# path.rglob() # 递归遍历所有子目录的文件
for item in path.parent.rglob('*.py'): # 遍历当前文件下所有.py文件
print(item.name)