路径操作

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

路径拼接和分解

操作符/
Path对象 / Path对象
Path对象 / 字符串
字符串 / Path对象
三种拼接方式的结果都是路径对象

from os import path  # python3.4之前使用这种方式
from pathlib import Path  # python3.4建议使用这种方式

p = path.join('/etc', 'sysconfig', 'network')
print(type(p), p)  # p的类型是字符串
print(path.exists(p))

print(path.split(p))  # 类型是元组;分割的结果为路径和基名
print(path.split('c:/test/a/b.txt'))  # ('c:/test/a', 'b.txt'),最后一部分为basename基名
print(path.dirname('c:/test/a/b.tar.gz'))  # linux中对于路径中的冒号,会将其认为是合法的文件名称
print(path.abspath('.'))  # 当前目录的绝对路径
print(path.abspath(''))  # 同样是当前目录的绝对路径
print(__file__)  # 当前路径下的当前文件

p1 = '/a/b/c/d/e/f/g.tar.gz'  # 打印p1的所有父目录

parent = path.dirname(p1)
print(parent)
while parent != path.dirname(parent):
    parent = path.dirname(parent)
    print(parent)

p2 = Path()  # 创建了一个路径对象
print(p2)  # 结果为点.,默认为当前路径
print(p2.absolute())

print(Path())  # 三种方式都是当前路径
# print(Path('.'))
# print(Path(''))

p3 = Path('/etc', 'sysconfig', 'network')
print(p3)

p4 = Path('a/b', 'c', 'd/e')
print(p4)

p5 = Path(p3, p4)
print(p5)

print(p5 / 'f' / 'g/h' / '123.zip')

# 总结:Path / str, str / Path, Path / Path 三种方式拼接结果都是路径对象

目录的组成部分

name、stem、suffix、suffixes、with_suffix(suffix)、with_name(name)
name 目录的最后一个部分
suffix 目录中最后一个部分的扩展名
stem 目录最后一个部分,没有后缀
suffixes 返回多个扩展名列表
with_suffix(suffix) 有扩展名则替换,无则补充扩展名
with_name(name) 替换目录最后一个部分并返回一个新的路径

p1 = Path('/a/b/c/d/e/f/g.tar.gz')
# for x in p1.parents:  # 打印p1的所有父目录
#     print(x)  # 一定要注意,x的类型是路径对象,不是字符串
print(p1.name, p1.stem, p1.suffix)  # g.tar.gz g.tar .gz
print(p1.suffixes)  # ['.tar', '.gz']返回多个扩展名列表

print(p1.with_name('magedu.xz'))  # 替换目录最后一个部分,并返回一个新的路径\a\b\c\d\e\f\magedu.xz
print(p1.with_suffix('.png'))  # 有扩展名则替换,无则补充扩展名\a\b\c\d\e\f\g.tar.png

全局方法

cwd()返回当前工作目录
home()返回当前家目录

判断方法

exists()目录或文件是否存在
is_dir()是否是目录,目录存在返回True
is_file()是否是普通文件
is_symlink()是否是软连接
is_socket()是否是socket文件
is_block_device()是否是块设备
is_char_device()是否第字符设备
is_absolute()是否是绝对路径

获取绝对路径

absolute()获取绝对路径
rmdir()删除目录,没有提供判断目录为空的方法
touch(mode=0O666, exist_ok=True)创建一个文件
as_uri()将路径返回成URI
mkdir(mode=0o777, parents=False, exist_ok=False)
parents,是否创建父目录,True等同于mkdir -p。False时,父目录不存在,则抛出FileNotFoundError;
exists_ok参数,在python3.5版本加入,False时,路径存在,抛出FileExistsError;True时,FileExistsError被忽略。
iterdir()迭代当前目录,不递归

通配符

glob(pattern)通配给定的模式
rglob(pattern)通配给定的模式,递归目录。
两者都返回一个生成器
?代表一个字符
*表示任意个字符
[abc]或[a-z]表示一个字符

猜你喜欢

转载自blog.csdn.net/sqsltr/article/details/90344639