Pathlib使用简单教程

pathlib – 面向对像的文件系统路径
从python3.4以后,pathlib内置,最初只是以为pathlib只是os.path功能的一个面像对像话,但在2019年,Django框架将os.path用pathlib换了。

官方文档地址
常用操作


from pathlib import Path, PurePath, PurePosixPath

BASE_DIR = Path(__file__).resolve().parent.parent


#判断路径是否存在 不存在创建
def inspectPath(path):
    filePath = Path(path)
    if not filePath.exists():
        filePath.mkdir()
# """
# 列出子目录:
# """
# p = Path('.')
# print([x for x in p.iterdir() if x.is_dir()])
# # 在此目录树中列出 Python 源文件:
# print(list(p.glob('**/*.py')))


# """
# 在目录树中导航:
# """
# p = Path('/etc')
# q = p / 'init.d' / 'reboot'
# print(q)
# print(q.resolve())
# # 查询路径属性:
# print(q.exists()) #该路径是否存在
# print(q.is_dir()) #此路径是否为目录
# #打开文件
# with q.open() as f: f.readline()

# """
# 纯路径
# """
# #一个表示系统路径样式的泛型类(实例化它可创建 PurePosixPath 或 PureWindowsPath)
# print(PurePath('main.py'))
# # PurePosixPath('setup.py')
# print(PurePath('foo', 'some/path', 'bar'))
# # PurePosixPath('foo/some/path/bar')
# print(PurePath(Path('foo'), Path('bar')))
# # PurePosixPath('foo/bar')
# PurePath()
# #PurePosixPath('.')

# 路径切分成各个部件
import os
path1 = r'C:\Users\Administrator\Desktop\测试开发\无纸化\paperless-interface-testing\README.md'
p = PurePath(path1)
print(p.parts)
# ('C:\\', 'Users', 'Administrator', 'Desktop', '测试开发', '无纸化', 'paperless-interface-testing', 'README.md')
# 表示驱动器号或名称的字符串(如果有):
print(p.drive)
# C:
# 表示(本地或全局)根(如果有)的字符串:
print(p.root)
# \
# 驱动器和根目录的串联:
print(p.anchor)
# C:\
# 提供对路径的逻辑祖先的访问的不可变序列:
print(p.parents[0])
print(p.parents[1])
print(p.parents[2])
# C:\Users\Administrator\Desktop\测试开发\无纸化\paperless-interface-testing
# C:\Users\Administrator\Desktop\测试开发\无纸化
# C:\Users\Administrator\Desktop\测试开发
# 返回带有正斜杠 () 的路径的字符串表示形式:/
print(p.as_posix())
# C:/Users/Administrator/Desktop/测试开发/无纸化/paperless-interface-testing/README.md
# 调用此方法等效于依次将路径与其他每个参数组合在一起:
print(PurePath(path1).joinpath('passwd'))
#C:\Users\Administrator\Desktop\测试开发\无纸化\paperless-interface-testing\README.md\passwd
#将此路径与提供的全局样式模式进行匹配。如果匹配成功,则返回,否则。TrueFalse
print(PurePath('a/b.py').match('*.py'))
# True
#返回一个表示当前目录的新路径对象
print(Path.cwd())
#返回一个新的路径对象,该对象表示用户的主目录(
print(Path.home())
# 路径是否指向现有文件或目录:
print(Path(path1).exists())
# 在此路径表示的目录中投出给定的相对模式,生成所有匹配的文件(任何类型):
print(sorted(Path('.').glob('*.py')))
# 它启用递归通配:**
print(sorted(Path('.').glob('**/*.py')))
#给定路径处创建一个新目录
Path(r'C:\Users\Administrator\Desktop\aa').mkdir(parents=True, exist_ok=True)
# parents:如果父目录不存在,是否创建父目录。
# exist_ok:只有在目录不存在时创建目录,目录已存在时不会抛出异常。
# 打开路径所指向的文件
# p = Path('setup.py')
# with p.open() as f: f.readline()
# 将此文件或目录重命名为给定目标
# Path('path').rename(目标)
#将此文件或目录重命名为给定目标,并返回指向目标的新 Path 实例。如果目标指向现有文件或目录,则将无条件替换该文件或目录。
# Path.replace(目标)
# 使路径为绝对路径,解析所有符号链接。将返回一个新的路径对象:
print(Path().resolve())
# C:\Users\Administrator\PycharmProjects\appium3
#这就像调用 Path.glob() 时,在给定的相对模式前面添加了 "":**/
print(sorted(Path().rglob("*.py")))
# 删除此目录。该目录必须为空。
# Path().rmdir()
#返回此路径是否指向与other_path相同的文件,该文件可以是 Path 对象,也可以是字符串。语义类似于
p = Path('spam')
q = Path('eggs')
p.samefile(q)
#False
p.samefile('spam')
#True
#在此给定路径上创建一个文件。如果给定了模式,则将其与进程的值相结合,以确定文件模式和访问标志。如果该文件已存在,则exist_ok为 true(并且其修改时间更新为当前时间),则函数将成功,否则将引发 FileExistsError。umask
#  Path.touch(模式 = 438,exist_ok = True)
#打开以字节模式指向的文件,向其写入数据,然后关闭该文件:
# Path.write_bytes(数据)
#打开文本模式下指向的文件,向其写入数据,然后关闭该文件:
# Path.write_text(数据,编码=无,错误=无,换行符=无)




# # windows 不能使用 PurePosixPath
# # 路径的父级
# print(PurePosixPath('my/library/setup.py').parent)
# #最终路径组件
# print(PurePosixPath('//some/share/setup.py').name)
# # 'setup.py'
# # 最终组件的文件扩展名
# print(PurePosixPath('my/library/setup.py').suffix)
# #'.py'
# # 路径的文件扩展名列表:
# print(PurePosixPath('my/library.tar.gar').suffixes)
# # ['.tar', '.gar']
# # 最后一个路径组件,不带其后缀:
# print(PurePosixPath('my/library.tar.gz').stem)
# # 'library.tar'
# # 返回带有正斜杠 () 的路径的字符串表示形式
# # 将路径表示为 URI。如果路径不是绝对路径,则会引发值错误。file
# print(PurePosixPath('/etc/passwd').as_uri())
# # 判断返回路径是否为绝对路径。如果路径同时具有根和驱动器(如果味道允许),则将其视为绝对路径:
# print(PurePosixPath('/a/b').is_absolute())
# # True
# print(PurePosixPath('a/b').is_absolute())
# #False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值