跳到主要内容

使用pathlib进行路径操作

原文: https://zhuanlan.zhihu.com/p/475661402

相对于传统的osos.pathpathlib具体如下优势:

  • pathlib实现统一管理,解决了传统操作导入模块不统一问题
  • pathlib使得在不同操作系统之间切换非常简单
  • pathlib是面向对象的,路径处理更灵活方便,解决了传统路径和字符串并不等价的问题
  • pathlib简化了很多操作,简单易用

操作对比

pathlib操作osos.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('路径有误,请检查!')