使用pathlib进行路径操作
原文: https://zhuanlan.zhihu.com/p/475661402
相对于传统的os
及os.path
,pathlib
具体如下优势:
pathlib
实现统一管理,解决了传统操作导入模块不统一问题pathlib
使得在不同操作系统之间切换非常简单pathlib
是面向对象的,路径处理更灵活方便,解决了传统路径和字符串并不等价的问题pathlib
简化了很多操作,简单易用
操作对比
pathlib 操作 | os 及os.path 操作 | 功能描述 |
---|---|---|
Path.resolve() | os.path.abspath() | 获得绝对路径 |
Path.chmod() | os.chmod() | 修改文件权限和时间戳 |
Path.mkdir() | os.mkdir() | 创建目录 |
Path.rename() | os.rename() | 文件或文件夹重命名,如果路径不同,会移动并重新命名 |
Path.replace() | os.replace() | 文件或文件夹重命名,如果路径不同,会移动并重新命名,如果存在,则破坏现有目标。 |
Path.rmdir() | os.rmdir() | 删除目录 |
Path.unlink() | os.remove() | 删除一个文件 |
Path.unlink() | os.unlink() | 删除一个文件 |
Path.cwd() | os.getcwd() | 获得当前工作目录 |
Path.exists() | os.path.exists() | 判断是否存在文件或目录name |
Path.home() | os.path.expanduser() | 返回电脑的用户目录 |
Path.is_dir() | os.path.isdir() | 检验给出的路径是一个文件 |
Path.is_file() | os.path.isfile() | 检验给出的路径是一个目录 |
Path.is_symlink() | os.path.islink() | 检验给出的路径是一个符号链接 |
Path.stat() | os.stat() | 获得文件属性 |
PurePath.is_absolute() | os.path.isabs() | 判断是否为绝对路径 |
PurePath.joinpath() | os.path.join() | 连接目录与文件名或目录 |
PurePath.name() | os.path.basename() | 返回文件名 |
PurePath.parent() | os.path.dirname() | 返回文件路径 |
Path.samefile() | os.path.samefile() | 判断两个路径是否相同 |
PurePath.suffix() | os.path.splitext() | 分离文件名和扩展名 |
常用函数
Path.cwd() # WindowsPath('D:/M工具箱')
Path.home() # WindowsPath('C:/Users/okmfj')
# 拼接出Windows桌面路径
Path(Path.home(), "Desktop") # WindowsPath('C:/Users/okmfj/Desktop')
Path.joinpath(Path.home(), "Desktop") # WindowsPath('C:/Users/okmfj/Desktop')
# 拼接出当前路径下的 MTool工具 子文件夹路径
Path.cwd() / 'MTool工具' # WindowsPath('D:/M工具箱/MTool工具')
input_path = r'C:\Users\okmfj\Desktop\MTool工具'
Path(input_path).name # 返回文件名+文件后缀
Path(input_path).stem # 返回文件名
Path(input_path).suffix # 返回文件后缀
Path(input_path).suffixes # 返回文件后缀列表
Path(input_path).root # 返回根目录
Path(input_path).parts # 返回文件
Path(input_path).anchor # 返回根目录
Path(input_path).parent # 返回父级目录
Path(input_path).parents # 返回所有上级目录的列表
input_path = r'C:\Users\okmfj\Desktop\MTool工具'
if Path(input_path).exists():
if Path(input_path).is_file():
print('是文件!')
elif Path(input_path).is_dar():
rint('是文件夹!')
else:
print('路径有误,请检查!')