前言
目前大家常用的对于文件和操作的操作使用 os.path
较多,比如 获取当前路径os.getcwd()
,判断文件路径是否存在os.path.exists(folder)
等等。
在Python3.4开始,官方提供了 pathlib 面向对象的文件系统路径
,核心的点在于 面向对象
, 这也是 os.path
和 pathlib
的本质区别
推进使用 pathlib
为什么推进使用 pathlib 呢?
来看个对比演示
看到区别在于 os 返回的是 字符串
, 而 pathlib.Path 返回的是 类
, 这个类提供了很多有用的关于文件和文件夹的内置方法
pathlib 优势举例演示
1、遍历文件夹更快,因为它返回的是 generator 生成器,节省内存
2、支持通配符,类似 find正则匹配查找特定类型的文件
3、高效的读写文件操作
- Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None) 打开文件,类似内置的open函数
- Path.read_bytes() 按照二进制模式读取
- Path.write_bytes(data)
将文件以二进制模式打开,写入 data 并关闭;一个同名的现存文件将被覆盖。
- Path.write_text(data, encoding=None, errors=None, newline=None)
将文件以文本模式打开,写入 data 并关闭;同名的现有文件会被覆盖。 可选形参的含义与 open() 的相同。
- Path.read_text() 按照文件字符串模式读取
其他的方法可以参考官方文档 https://docs.python.org/zh-cn/3/library/pathlib.html
Pathlib的特殊性
pathlib同步的考虑了 Windows 路径的特性,提供了带 I/O 操作的和不带 I/O 操作的类,官方定义叫做 具体路径(带I/O)和纯路径(不带I/O)
只想操作路径但不想实际访问操作系统,实例化一个纯路径是必须的。比如在Linux设备上操作Windows路径,那么应该实例化一个 PureWindowsPath 而不是 WindowsPath
os.path 和 pathlib 相同函数对应表
os/os.path |
pathlib |
os.path.abspath() |
Path.absolute() |
os.path.realpath() |
Path.resolve() |
os.chmod() |
Path.chmod() |
os.mkdir() |
Path.mkdir() |
os.makedirs() |
Path.mkdir() |
os.rename() |
Path.rename() |
os.replace() |
Path.replace() |
os.rmdir() |
Path.rmdir() |
os.remove(), os.unlink() |
Path.unlink() |
os.getcwd() |
Path.cwd() |
os.path.exists() |
Path.exists() |
os.path.expanduser() |
Path.expanduser() 和 Path.home() |
os.listdir() |
Path.iterdir() |
os.path.isdir() |
Path.is_dir() |
os.path.isfile() |
Path.is_file() |
os.path.islink() |
Path.is_symlink() |
os.link() |
Path.hardlink_to() |
os.symlink() |
Path.symlink_to() |
os.readlink() |
Path.readlink() |
os.path.relpath() |
PurePath.relative_to() |
os.stat() |
Path.stat(), Path.owner(), Path.group() |
os.path.isabs() |
PurePath.is_absolute() |
os.path.join() |
PurePath.joinpath() |
os.path.basename() |
PurePath.name |
os.path.dirname() |
PurePath.parent |
os.path.samefile() |
Path.samefile() |
os.path.splitext() |
PurePath.stem and PurePath.suffix |
原文链接 Python模块pathlib操作文件和目录操作总结