In [86]:
# 多行结果输出支持
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
In [87]:
from pathlib import Path, PurePath, PureWindowsPath
In [88]:
# 查看目录下的内容
p = Path('..')
[x for x in p.iterdir() if x.is_dir()]
Out[88]:
In [89]:
# 所有的notebook文件
list(p.glob('**/*.ipynb'))
Out[89]:
In [90]:
# 切换目录
dir1 = p / 'python'
dir1
Out[90]:
In [91]:
# 获取绝对路径,在Windows下会把 '/' 替换为 '\'
dir1.resolve()
Out[91]:
In [92]:
# 当前路径是否存在
dir1.exists()
Out[92]:
In [93]:
# 判断是否是目录
dir1.is_dir()
Out[93]:
In [94]:
file1 = dir1 / 'pathlib_glob.ipynb'
In [95]:
file1.is_dir()
Out[95]:
In [136]:
# 打开文件
with file1.open() as f:
f.readline()
Out[136]:
In [97]:
# Pure Path 类对象会使得访问与操作系统无关
In [98]:
dir2 = PurePath('../python')
# or
dir2 = PurePath('..', 'python')
# or
dir2 = PurePath(Path('..'), Path('python'))
# PurePath() 会默认获得当前的路径
In [99]:
dir2
Out[99]:
In [100]:
# 当一次给出多个绝对路径时,一般将最后的路径作为最终的结果
# 但是,在Windows路径中,更改本地根目录不会丢弃之前的驱动器设置
PurePath('/etc', '/usr', 'lib64')
PureWindowsPath('c:/Windows', '/Program Files')
Out[100]:
Out[100]:
In [101]:
PurePath('foo//bar')
PurePath('foo/./bar')
PurePath('foo/../bar')
Out[101]:
Out[101]:
Out[101]:
In [102]:
dir3 = dir2 / 'pathlib_glob.ipynb'
In [103]:
dir3
Out[103]:
In [104]:
# 获取路径的各个部分
# 其会返回一个元组
dir3.parts
Out[104]:
In [105]:
# 获取驱动器标识
dir3.drive
Out[105]:
In [106]:
dir3.root
Out[106]:
In [107]:
dir2.anchor
Out[107]:
In [108]:
# 获取父目录
dir3.parents[0]
dir3.parents[1]
dir3.parent
Out[108]:
Out[108]:
Out[108]:
In [109]:
# 获取最后的名字
dir3.name
Out[109]:
In [110]:
# 最后文件或者路径的后缀获取
dir3.suffix
dir3.suffixes
Out[110]:
Out[110]:
In [111]:
# 最后文件的名字,不带有后缀
dir3.stem
Out[111]:
In [112]:
# 匹配
PurePath('a/b.py').match('*.py')
PurePath('/a/b/c.py').match('b/*.py')
Out[112]:
Out[112]:
In [113]:
# 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')
Out[113]:
In [119]:
# with_suffix 改后缀
In [124]:
# 获取当前的路径
Path.cwd()
Out[124]:
In [132]:
# 获取文件的信息
file1.stat()
Out[132]:
.glob 可以用于匹配文件
In [138]:
# 获取文件或者文件夹的所有者
file1.owner()
Out[138]:
In [ ]: