from pathlib import Path
| 操作 | 例子 | 备注 |
|---|---|---|
| 创建 | p = Path('C:/Users/Username/Documents) | 可以是文件,也可以是文件夹,现在还不能保证这个路径有东西 |
p = Path('C: \\', 'Users', 'Username', 'Documents') | 等价写法,可以把各个部分拆开 | |
p2 = p.with_name('file2.txt') | 快速获得同一文件夹下其他文件的 Path 对象 | |
p2 = p.with_suffix('.csv') | 快速获得同一文件 basename 但不同后缀的 Path 对象 | |
| 拼接 | p = Path(...) / str_of_subpath | 非常自然地用除号进行连接 |
p = Path(...).joinpath(str_of_subpath) | 也可以用方法 | |
| 完整路径字符串 | str(p) | |
| 获取上一级 | p.parent | 文件夹的上级文件夹;文件的所在文件夹;可以连用多个 parent |
| 获取 basename, noext-basename, ext | p.name, p.stem, p.suffix | |
| 获取所在文件夹(os.path.dirname) | p.parent 即可。如果还要获取文件夹的路径再 str() | |
| 获取路径里各节组成的字符串元组 | p.parts | Windows 的 C: \\ 是一个单独的字符串 |
| 是否存在,是否是文件/文件夹 | p.exists(), p.is_file(), p.is_dir() | |
| 遍历 | p.iterdir() | 返回生成器,可用 for 迭代,需要事先判断是否为文件夹 |
| 查找(基于正则) | p.glob('*.txt') | 返回生成器,需要事先判断是否为文件夹,见 4 glob built-in |
p.glob('*/*.txt') | 查找当前文件夹下一级所有文件夹里的 txt | |
p.glob('**/*.txt') | 查找当前文件夹下所有级 文件夹里的 txt | |
| 读写 | p.read_text(...), p.read_bytes(...) p.write_text(...), p.write_bytes(...) | 都不用调用 open 打开了 |
| with | with p.open('r') as f: | 和普通的 open 一样用 |
| 判断两个路径是否等价 | p.samefile(str_of_file) | |
| 创建/删除空文件夹 | p.mkdir(), p.rmdir() |
本文由 mdnice 多平台发布