路径拼接和分解
操作符/
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]表示一个字符