从上图可以看出:PurePath 类是所有类的基类
基础使用
列出子目录
列出指定类型的文件
路径拼接
在目录树中移动
使用`/`来拼接路径
>>> p = Path('/etc')>>> q = p / 'init.d' / 'reboot'>>> qWindowsPath('/etc/init.d/reboot')>>> q.resolve()WindowsPath('C:/etc/init.d/reboot')>>> print(q)etcinit.d eboot>>> print(q.resolve())C:etcinit.d eboot>>>
查询路径的属性
>>> q.exists() # Unix 里面这个会返回TrueFalse>>> q.is_dir()False>>>
打开一个文件
>>> with q.open() as f: f.readline()...FileNotFoundError: [Errno 2] No such file or directory # 如果不存在则报错
Pure paths 纯路径
纯路径对象提供了
不实际访问文件系统的路径处理操作。有三种方式来访问这些类。
class pathlib.
PurePath(*pathsegments)参数为空时,返回当前路径
当同时指定多个绝对路径,则使用最后一个
在 Windows 路径中,改变本地根目录并不会丢弃之前盘符的设置
双斜线和单独的点都会被消除,但是双点 (‘..’) 不会,以防改变符号链接的含义。
class pathlib.
PurePosixPath(*pathsegments)其他操作与 PurePath 相同
class pathlib.PureWindowsPath(*pathsegments)
其他操作与 PurePath 相同
无论你正运行什么系统,你都可以实例化这些类,因为它们提供的操作不做任何系统调用
通用性质
路径是不可变并可哈希的。相同风格的路径可以排序与比较。
不同风格的路径比较得到不等的结果并且无法被排序:
运算符
斜杠操作符有助于操作子路径
文件对象可用于任何接受 os.PathLike 接口实现的地方
路径的字符串表示法
访问路径独立组件
可以使用以下特征属性:
PurePath.parts
返回一个元组,可以访问路径的多个组件
方法和特征属性
可以使用以下特征属性:
PurePath.drive
一个表示驱动器盘符或命名的字符串
PurePath.
root一个表示(本地或全局)根的字符串
PurePath.
anchor驱动器和根的联合
PurePath.
parents一个不可变序列,提供对路径逻辑祖先的访问
PurePath.
parent返回当前路径的父路径
如果想要向上移动任意文件系统路径,推荐先使用 Path.resolve() 来解析符号链接以及消除 ".." 组件。
PurePath.name
一个表示最后路径组件的字符串,排除了驱动器与根目录
PurePath.
suffix最后一个组件的文件扩展名
PurePath.
suffixes路径的文件扩展名列表
PurePath.
stem最后一个路径组件,除去后缀
PurePath.
as_posix()返回使用正斜杠(/)的路径字符串
PurePath.
as_uri()将路径表示为 file URL的格式。如果并非绝对路径,抛出 ValueError。
PurePath.
is_absolute()返回此路径是否为绝对路径。如果路径同时拥有驱动器符与根路径(如果风格允许)则将被认作绝对路径。
PurePath.
is_reserved()PureWindowsPath,如果路径是被 Windows 保留的则返回 True,否则 False。在 PurePosixPath,总是返回 False。
PurePath.
joinpath(*other)调用此方法等同于将每个 other 参数中的项目连接在一起
PurePath.
match(pattern)如果 pattern 是绝对的,则路径必须是绝对的,并且路径必须完全匹配:
PurePath.
relative_to(*other)计算此路径相对
other表示路径的版本。如果不可计算,则抛出 ValueError:
>>> p = PurePosixPath('/etc/passwd')>>> p.relative_to('/')PurePosixPath('etc/passwd')>>> p.relative_to('/etc')PurePosixPath('passwd')>>> p.relative_to('/usr')Traceback (most recent call last):File "", line 1, in File "pathlib.py", line 694, in relative_to .format(str(self), str(formatted))) ValueError: '/etc/passwd' does not start with '/usr' ```
PurePath. with_name(name)返回一个新的路径并修改 name。如果原本路径没有 name,ValueError 被抛出
PurePath. with_suffix(suffix) 返回一个新的路径并修改后缀 suffix。如果原本的路径没有后缀,新的 suffix 则被追加以代替。如果 suffix 是空字符串,则原本的后缀被移除: ```python >>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz') >>> p.with_suffix('.bz2') PureWindowsPath('c:/Downloads/pathlib.tar.bz2') >>> p = PureWindowsPath('README') >>> p.with_suffix('.txt') PureWindowsPath('README.txt') >>> p = PureWindowsPath('README.txt') >>> p.with_suffix('') PureWindowsPath('README') ```
Path 具体路径具体路径是纯路径的子类。除了后者提供的操作之外,它们还提供了对路径对象进行系统调用的方法。
有以下三种方法可以实例化具体路径:class pathlib.Path(*pathsegments)
一个 PurePath 的子类,此类以当前系统的路径风格表示路径(实例化为 PosixPath 或 WindowsPath):
class pathlib. PosixPath(*pathsegments)
class pathlib. WindowsPath(*pathsegments)
方法
除纯路径方法外,具体路径还提供以下方法。classmethod Path.cwd()
返回一个新的表示当前目录的路径对象,和 os.getcwd() 返回的相同
classmethod Path. home()返回一个表示当前用户根目录的新路径对象,和 os.path.expanduser() 构造含 ~ 路径返回的相同
Path. stat()返回此路径的信息(类似于 os.stat())。
Path. chmod(mode)改变文件的模式和权限,和 os.chmod() 一样:
Path. exists()此路径是否指向一个已存在的文件或目录
Path. expanduser()返回展开了根目录与的构造,和 os.path.expanduser() 一样:
Path. glob(pattern)生成所有匹配 pattern 的文件“” 模式表示 此目录以及所有子目录
Path. group()返回拥有此文件的用户组。
Path.is_dir()
如果路径指向一个目录(或者一个指向目录的符号链接)则返回 True,如果指向其他类型的文件则返回 False
当路径不存在或者是一个破损的符号链接时也会返回 False
Path.is_file()
如果路径指向一个正常的文件(或者一个指向正常文件的符号链接)则返回 True,如果指向其他类型的文件则返回 False。
当路径不存在或者是一个破损的符号链接时也会返回 False
Path.is_symlink()
如果路径指向符号链接则返回 True, 否则 False。
如果路径不存在也返回 False
Path.is_socket()
如果路径指向一个 Unix socket 文件(或者指向 Unix socket 文件的符号链接)则返回 True,如果指向其他类型的文件则返回 False。
当路径不存在或者是一个破损的符号链接时也会返回 False
Path.is_fifo()
如果路径指向一个先进先出存储(或者指向先进先出存储的符号链接)则返回 True ,指向其他类型的文件则返回 False。
当路径不存在或者是一个破损的符号链接时也会返回 False
Path.is_block_device()
如果文件指向一个块设备(或者指向块设备的符号链接)则返回 True,指向其他类型的文件则返回 False。
当路径不存在或者是一个破损的符号链接时也会返回 False
Path.is_char_device()
如果路径指向一个字符设备(或指向字符设备的符号链接)则返回 True,指向其他类型的文件则返回 False。
当路径不存在或者是一个破损的符号链接时也会返回 False
Path.iterdir()
当路径指向一个目录时,产生该路径下的对象的路径
Path. mkdir(mode=0o777, parents=False, exist_ok=False)创建目录
Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)
打开路径指向的文件
Path. owner()返回拥有此文件的用户名。如果文件的 UID 无法在系统数据库中找到,则抛出 KeyError。
Path.read_bytes()
以字节对象的形式返回路径指向的文件的二进制内容:
Path. read_text(encoding=None, errors=None)以字符串形式返回路径指向的文件的解码后文本内容
Path. rename(target)使用给定的 target 将文件重命名
Path. replace(target)使用给定的 target 重命名文件或目录。
Path.resolve(target)
将路径绝对化,解析任何符号链接。返回新的路径对象:
Path. rglob(pattern)与给定模式前面添加''一样调用 Path.glob():
Path. rmdir()移除此目录。此目录必须为空的。
Path.samefile(other_path)
返回此目录是否指向与可能是字符串或者另一个路径对象的 other_path 相同的文件。
Path. symlink_to(target, target_is_directory=False)将此路径创建为指向 target 的符号链接。在 Windows 下,如果链接的目标是一个目录则 target_is_directory 必须为 true (默认为 False)。在 POSIX 下, target_is_directory 的值将被忽略。
Path. touch(mode=0o666, exist_ok=True)将给定的路径创建为文件。
如果给出了 mode 它将与当前进程的 umask 值合并以确定文件的模式和访问标志。如果文件已经存在,则当 exist_ok 为 true 则函数仍会成功(并且将它的修改事件更新为当前事件),否则抛出 FileExistsError。
Path.unlink()
移除此文件或符号链接。如果路径指向目录,则用 Path.rmdir() 代替。
Path.write_bytes(data)
将文件以二进制模式打开,写入 data 并关闭:
Path. write_text(data, encoding=None, errors=None)将文件以文本模式打开,写入 data 并关闭:
到此这篇pathlib2(pathlib2功能)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/20014.html