python模块----Path类
Posted zoer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python模块----Path类相关的知识,希望对你有一定的参考价值。
Path类
python对系统文件操作的类
导入
from pathlib import Path
初始化
对文件或者目录进行初始化
p = Path()
#对当前目录进行初始化
p1 = Path(‘/etc/ssh/sshd_config‘)
#对文件进行初始化
p2 = Path(‘/etc/sysconfig/network-scripts/‘)
#对目录进行初始化
初始化后生成一个类对象p1与p2
则可使用类对象的属性与方法
操作符 / 拼接路径
Path对象 / Path对象
print(Path(‘/first/second‘) / Path(‘third‘))
>>/first/second/third
Path对象 / ‘字符串‘
print(Path(‘first/second‘) / ‘third‘ )
>>first/second/third
print(Path(‘first/second‘) / ‘third‘ / ‘forth‘)
>>first/second/third/forth
‘字符串’ / Path对象
print(‘/first‘ / Path(‘second‘) / ‘third‘)
>>/first/second/third
print(‘first‘ / ( ‘second‘ / Path(‘third‘)))
>>first/second/third
joinpath()方法拼接
print(p2.joinpath(‘a‘,‘b‘,Path(‘c‘)))
>>/etc/sysconfig/network-scripts/a/b/c
Path属性
parts 路径分解
返回目录与文件各部分的元组
p1 = Path(‘/etc/ssh/sshd_config‘)
p2 = Path(‘/etc/sysconfig/network-scripts/‘)
print(p1.parts)
print(p2.parts)
>>(‘/‘, ‘etc‘, ‘ssh‘, ‘sshd_config‘)
>>(‘/‘, ‘etc‘, ‘sysconfig‘, ‘network-scripts‘)
parent、parents获取父目录
print(p2.parent) #获取到了除自己的上层父目录
>>/etc/sysconfig
for i in p2.parents: #parents返回一个可迭代对象
print(i)
>>/etc/sysconfig
>>/etc
>>/
目录的组成部分
- p1 = Path(‘/root/python/369relase/mysql.tar.gz‘)
- print(p1.name) #获取最后一个部分‘mysql.tar.gz’
- print(p1.suffix) #获取最后一部分后缀‘.gz’
- print(p1.stem) #获取最后除后缀的部分
- print(p1.suffixes) #返回多个扩展名列表
- print(p1.with_suffix(‘.bz‘)) #修改扩展名为‘mysql.tar.bz’
- print(p1.with_name(‘redis‘)) #修改文件名
- p1.with_name(‘nginx.tar‘).touch() #新建nginx.tar文件
Path方法
cwd()
获取当前工作目录
home()
获取家目录
stat()
获取文件的元数据
import datetime
from pathlib import Path
p1 = Path(‘/etc/ssh/sshd_config‘) #文件初始化
print(p1.stat()) #使用类方法stat()查看文件元数据
a_time = p1.stat().st_atime #直接在文件元数据对象上获取atimede属性,返回一个时间戳
date_a_time = datetime.datetime.fromtimestamp(a_time)
print(date_a_time) #将时间戳返回本地时间对象
>>2020-06-26 15:29:38.355023
lstat
如果是符号链接则显示本身文件的信息,用法等同于stat
判断方法
- exists() 目录或者文件是否存在
- is_dir()
- is_file()
- is_symlink() 是否是软链接
- is_socket() 是否是socket文件
- is_block_device() 是否是块设备
- is_char_device() 是否是字符设备
- is_absolute() 是否是绝对路径
absolute()
获取绝对路径
resolve()
返回一个绝对路径,如果是软链接则解析
print(Path(‘/bin‘).resolve())
>>/usr/bin
通配符
glob(pattern)
匹配给定模式,返回生成器对象,在当前目录下匹配
rglob(pattern)
匹配给定模式,返回生成器对象,递归匹配
? 代表一个字符
* 代表任意个任意字符
[abc][a-z] 表示范围内的一个字符
touch()
创建新文件,touch(mode=0o666,exist_ok=True)
mode指定文件权限,exist_ok为True 文件存在不报错
mkdir()
创建目录,mkdir(mode=0o755,parents=True,exist_ok=True)
mode指定目录权限,parents指定是否递归创建目录,exist_ok为True 文件存在不报错
rmdir()
删除空目录,目录不为空报Directory not empty 非空错,目录不存在报No such file or directory错误
iterdir()
将当前目录下的文件生成一个迭代器,不递归
以上是关于python模块----Path类的主要内容,如果未能解决你的问题,请参考以下文章
node模块之path——path.join和path.resolve的区别
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
Python模块详解以及import本质,获得文件当前路径os.path.abspath,获得文件的父目录os.path.dirname,放到系统变量的第一位sys.path.insert(0,x)