python中pathlib使用(告别os模块)

引用官方的话,The old pathlib module on bitbucket is in bugfix-only mode. The goal of pathlib2 is to provide a backport of standard pathlib module which tracks the standard library module, so all the newest features of the standard pathlib can be used also on older Python versions.
大体意思: 老版本的pathlib模块处于仅修补程序模式,而新版本的pathlib2是以修补更新的pathlib而发布的,而且所有的新功能都可以兼容过去的旧版本python。

pathlib2和pathlib差不多,我一直用的pathlib, 所以这里就介绍下pathlib

from pathlib import Path

p = Path(r'd:\test\tt.txt.bk')
p.name                          # 获取文件名
# tt.txt.bk
p.stem                          # 获取文件名除后缀的部分
# tt.txt
p.suffix                        # 文件后缀
# .bk
p.suffixs                       # 文件的后缀们...
# ['.txt', '.bk']
p.parent                        # 相当于dirnanme
# WindowsPath('d:/test')
p.parents                       # 返回一个iterable, 包含所有父目录
# <WindowsPath.parents>
for i in p.parents:
    print(i)
# d:\test
# d:\
a.parts                         # 将路径通过分隔符分割成一个元祖
# ('d:\\', 'test', 'tt.txt.bk')


p = Path(r'd:\test')
p = Path(p, 'tt.txt')           # 字符串拼接
p.exists()                      # 判断文件是否存在
p.is_file()                     # 判断是否是文件
p.is_dir()                      # 判断是否是目录
遍历文件夹
p = Path(r'd:\test')
# WindowsPath('d:/test')
p.iterdir()                     # 相当于os.listdir
p.glob('*')                     # 相当于os.listdir, 但是可以添加匹配条件
p.rglob('*')                    # 相当于os.walk, 也可以添加匹配条件


创建文件夹
p = Path(r'd:\test\tt\dd')
p.mkdir(exist_ok=True)          # 创建文件目录(前提是tt目录存在, 否则会报错)
# 一般我会使用下面这种创建方法
p.mkdir((exist_ok=True, parents=True) # 递归创建文件目录


文件详细信息
p = Path(r'd:\test\tt.txt')
p.stat()                        # 获取详细信息
# os.stat_result(st_mode=33206, st_ino=562949953579011, st_dev=3870140380, 
# st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1525254557, 
# st_mtime=1525254557, st_ctime=1525254557)
p.stat().st_size                # 文件大小
# 0
p.stat().st_ctime               # 创建时间
# 1525254557.2090347
# 其他的信息也可以通过相同方式获取
p.stat().st_mtime               # 修改时间

其他操作

p = Path.cwd()   # 获取当前目录
p.with_name('new.txt') #替换目录最后一个部分并返回一个新的路径
p.with_suffix('.txt') #替换扩展名,返回新的路径,扩展名存在则不变
p.is_symlink() #是否是软链接
p.is_socket() #是否是socket文件
p.is_block_device() #是否是块设备
p.is_char_device() #是否是字符设备
p.is_absolute() #是否是绝对路径
p.resolve() #返回一个新的路径,这个新路径就是当前Path对象的绝对路径,如果是软链接则直接被解析
p.absolute() #也可以获取绝对路径,但是推荐resolve()


路径拼接和分解
# 传进多个字符串
Path('/', 'test','tt','dd','new.txt')
#使用Path.joinpath()
example_path3 = Path(r'd:\test\tt\dd').joinpath('new')
#利用 / 可以创建子路径
p = Path('d:\test\tt\dd')
example_path5 = p / 'new/new.txt'

具体详见官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值