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()

将当前目录下的文件生成一个迭代器,不递归

猜你喜欢

转载自www.cnblogs.com/zoer/p/13197542.html