准备开一个长期专题,将学习《Python标准库》中的一些demo记录下来,方便查询和回忆。Python的版本是3.7,官网文档在https://docs.python.org/zh-cn/3.7/library/index.html
Pathlib是Python 3.4新加入的一个操作路径相关函数的模块,用于替代os.path模块。Pathlib提供Path类去处理,而不是直接操作字符串。
Pathlib主要有PurePath类和继承而来的子类Path,前者是没有IO的纯路径,后者是可以有IO操作的具体路径。一般情况下直接使用Path即可。
罗列一些常用的方法和熟悉:
from pathlib import PurePath
p = PurePath()
p2 = p / 'app' / 'core' # 拼接路径的方法一
print(p2.joinpath("work1.py")) # 拼接路径的方法二, 返回PurePath对象
print(p2.parent) # 返回父路径,Path对象
print(p2.name) # 返回最后路径组件的字符串,string
print(p2.suffix) # 返回最后一个组件的文件扩展名,如果有的话,string
print(p2.stem) # 返回最后一个路径组件,除去后缀,string
print(p2.match("/*.py")) # 模块匹配
Path类除了上述方法外,还有一些其他的:
from pathlib import Path
p = Path()
print(p.cwd()) # 当前目录的路径对象
print(p.home()) # 当前用户家目录
print(p.resolve()) # 绝对路径
print(p.joinpath("work1.py").exists()) # 是否存在
print(list(p.glob('*/*.py'))) # 解析相对于此路径的通配符 pattern,产生所有匹配的文件
print(p.is_file())
print(p.is_dir())
[print(x) for x in p.iterdir() if x.is_dir()] # 产生该路径下的对象的路径
p4 = p / "abc"
p4.mkdir(exist_ok=True) # 创建文件夹
p4.rmdir() # 删除文件夹
p6 = p / 'test.txt'
p6.touch() # 创建文件
data = ['hello world', 'bye']
with p6.open("a") as f: # 写文件
for d in data:
f.write(d+'\n')
with p6.open() as f: # 读文件
for line in f.readlines():
print(line.strip())
p6.rename(Path('test1.txt')) # 重命名方法一
p7 = p / 'test1.txt'
p7.replace(Path('test2.txt')) # 重命名方法二
p8 = p / 'test2.txt'
p8.unlink() # 删除文件
最后是pathlib和os.path方法的映射表,熟悉那个用那个吧。