PythonPathlib不同操作系统下使用路径的最佳选择

Python pathlib

参考:官方文档

Feature

  • 面向对象的文件系统路径
  • 这个模块提供了代表文件系统路径的类,其语义适用于不同的操作系统
  • 如果你以前从未使用过这个模块,或者只是不确定哪个类适合你的任务,那么Path很可能是你需要的,它为代码运行的平台实例化一个具体路径

Relationship):

关系图

Base_Use

# 导入主类
from pathlib import Path
# 列出子目录
p = Path('.')
[x for x in p.iterdir() if x.is_dir()]
# 在此目录树下列出jupyter notebook缓存文件
list(p.glob('**/*.ipynb'))
# 在目录树内导航(非常有用)
p = Path('haha')
q = p / 'xixi' / 'heihei'
print(q)
# 查询路径属性
# 路径下文件是否存在
print(q.exists())
# 路径下文件是否是dir
print(q.is_dir())
# 打开文件
# with q.open() as f: f.readline()

Pathlib.Path

Path是纯路径类的子类,除了由后者提供的操作外,他们还提供了对路径对象执行系统调用的方法。

Instantiation

有三种方式来实例化具体路径:

import pathlib
from pathlib import Path
# 方法一
pathlib.Path('setup.py')
# 方法二(非Windows系统下,不然会报错,比如博主使用的windows系统实例化的就报错了)
pathlib.PosixPath('setup.py')
# 方法三(Windows系统下使用)
pathlib.WindowsPath('setup.py')

Function

除了具备纯路径的方法外,还提供了一下而外方法,这里只列出几个常用的,想了解详细的可以去官方文档查询

p = Path()
# 返回当前目录
p.cwd()
# 返回用户主目录
p.home()
# 返回有关此路径的信息
print(p.stat())
p.stat().st_size
# 目标路径是否存在(无论是文件夹还是文件)
# 文件夹
q = p / '.ipynb_checkpoints'
print(q.exists())
# 文件
q = p / '.ipynb_checkpoints' / 'test_-checkpoint.ipynb'
print(q.exists())
# 在此路径表示的目录中遍历给定的搜索模下产生的所有相匹配的文件(任何类型)
# 只在当前目录有效
print(sorted(Path('.').glob('*.ipynb')))
# "**"模式表示递归地,表示这个目录和他下面的所有子目录( 在大型目录树中使用“**”模式可能会消耗大量的时间。)
print(sorted(Path('.').glob('**/*.ipynb')))
# 是否是文件夹
p.is_dir()
# 是否是文件
p.is_file()
# 当路径指向一个目录时,会产生目录内容路径的一个对象
for child in p.iterdir():print(child,type(child))
# 创建一个新目录 Path.mkdir(mode = 0o777,parents = False,exist_ok = False )
new_dir = p / "test1123"
# new_dir.mkdir()
# 删除一个目录,该目录必须为空
# Path.rmdir()
# 打开一个文件,就像内置open()函数一样
# with p.open() as f :
#     f.readline()
# 重命名
# Path.rename(目标)

猜你喜欢

转载自www.cnblogs.com/special-li/p/9103310.html