<jupyter_start><jupyter_text>pathlib and glob basic 1. [11.1. pathlib — Object-oriented filesystem paths — Python 3.6.4 documentation](https://docs.python.org/3/library/pathlib.html)2. [11.7. glob — Unix style pathname pattern expansion — Python 3.6.4 documentation](https://docs.python.org/3/library/glob.html)<jupyter_code># 多行结果输出支持
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
from pathlib import Path, PurePath, PureWindowsPath
# 查看目录下的内容
p = Path('..')
[x for x in p.iterdir() if x.is_dir()]
# 所有的notebook文件
list(p.glob('**/*.ipynb'))
# 切换目录
dir1 = p / 'python'
dir1
# 获取绝对路径，在Windows下会把 '/' 替换为 '\'
dir1.resolve()
# 当前路径是否存在
dir1.exists()
# 判断是否是目录
dir1.is_dir()
file1 = dir1 / 'pathlib_glob.ipynb'
file1.is_dir()
# 打开文件
with file1.open() as f:
    f.readline()
# Pure Path 类对象会使得访问与操作系统无关
dir2 = PurePath('../python')
# or
dir2 = PurePath('..', 'python')
# or
dir2 = PurePath(Path('..'), Path('python'))
# PurePath() 会默认获得当前的路径
dir2
# 当一次给出多个绝对路径时，一般将最后的路径作为最终的结果
# 但是，在Windows路径中，更改本地根目录不会丢弃之前的驱动器设置
PurePath('/etc', '/usr', 'lib64')
PureWindowsPath('c:/Windows', '/Program Files')
PurePath('foo//bar')
PurePath('foo/./bar')
PurePath('foo/../bar')<jupyter_output><empty_output><jupyter_text>* 路径之间也是可以进行比较的    * >    * <    * ==    * in<jupyter_code>dir3 = dir2 / 'pathlib_glob.ipynb'
dir3
# 获取路径的各个部分
# 其会返回一个元组
dir3.parts
# 获取驱动器标识
dir3.drive
dir3.root
dir2.anchor
# 获取父目录
dir3.parents[0]
dir3.parents[1]
dir3.parent
# 获取最后的名字
dir3.name
# 最后文件或者路径的后缀获取
dir3.suffix
dir3.suffixes
# 最后文件的名字，不带有后缀
dir3.stem
# 匹配
PurePath('a/b.py').match('*.py')
PurePath('/a/b/c.py').match('b/*.py')
# Return a new path with the name changed. If the original path doesn’t have a name,
# ValueError is raised:
p1 = PurePath('../python')
p1.with_name('pathlib_glob.ipynb')
# with_suffix 改后缀
# 获取当前的路径
Path.cwd()
# 获取文件的信息
file1.stat()<jupyter_output><empty_output><jupyter_text>** .glob 可以用于匹配文件** * Path.mkdir() 可以用于创建文件夹<jupyter_code># 获取文件或者文件夹的所有者
file1.owner()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16609672691744015, 'fraction_numerical': 0.024914509037616023, 'mean_word_length': 5.2439024390243905, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '505040', 'license': 'MIT', 'n_tokens_mistral': 1016, 'n_tokens_neox': 1052, 'n_words': 161, 'path': 'nbs/pathlib_glob.ipynb', 'repo_name': 'AutuanLiu/Python', 'size': '2047'}