os.path
from os import path
# 拼接路径
p=path.join('/etc','sysconfig','network')
# 路径是否存在
print(path.exists(p))
# 分割 (元组: dirname和basename)
print(path.split(p))
# 路径和基名
print(path.dirname(p),path.basename(p))
# 当前路径
print(path.abspath(""),path.abspath('.'))
# windows
print(path.splitdrive('o:/tmp/test')) #windows
文件根目录
p1=path.abspath(__file__) #父文件名路径
print(p1)
while p1 != path.dirname(p1):
p1=path.dirname(p1)
print(p1)
pathlib
python 3.4支持
from pathlib import Path
# 当前相对路径
print(Path(),Path(''),Path('.'))
. . .
# 路径
print(Path().cwd())
/Users/sunday/Code/MG2022/d23
#当前绝对路径
print(Path().absolute())
/Users/sunday/Code/MG2022/d23
# 路径拼接
print(Path('a')/'b/c')
a/b/c
# 父路径
p1=Path('/','a','b/c','',Path(''),Path('e/f'))
print(p1.parent)
/a/b/c/e/f
print(p1.parent.parent.joinpath('d1','d2/d3',Path('d3/d4','d5')))
/a/b/c/d1/d2/d3/d3/d4/d5
# 父路径列表
print(p1, list(p1.parents))
/a/b/c/e/f [PosixPath('/a/b/c/e'), PosixPath('/a/b/c'), PosixPath('/a/b'), PosixPath('/a'), PosixPath('/')]
# 根目录
print(p2.parents[len(p2.parents)-1])
print(p2.parents[len(p2.parents)-2])
/
/Users
# 当前文件路径
p2=Path(__file__)
print(p2)
/Users/sunday/Code/MG2022/d23/8-18-path.py
# 是否存在
print(p2.exists())
True
# 基名和父路径
print(p2.name,p2.parent)
8-18-path.py /Users/sunday/Code/MG2022/d23
# 后缀,后缀列表,前缀,基名
print(p2.suffix,p2.suffixes,p2.stem,p2.name)
.py ['.py'] 8-18-path 8-18-path.py
# 换名
#print(p2.parent, p2.parent.parent / 'redis')
print(p2.parent, p2.parent.with_name('redis'))
/Users/sunday/Code/MG2022/d23 /Users/sunday/Code/MG2022/redis
# 修改扩展名
print(p2.with_suffix('.sh'))
/Users/sunday/Code/MG2022/d23/8-18-path.sh
p2=Path(__file__)
print(Path(p2).cwd())
/Users/sunday/Code/MG2022/d23
# 修改后缀及父路径列表
print(list(p2.parent.with_suffix('.zip').absolute().parents))
[PosixPath('/Users/sunday/Code/MG2022'), PosixPath('/Users/sunday/Code'), PosixPath('/Users/sunday'), PosixPath('/Users'), PosixPath('/')]
p1=Path()
/Users/sunday/Code/MG2022/d23/8-18-path.sh
print(p1.home())
/Users/sunday
print(p1.is_absolute())
False
# 递归显示所有文件
print(list(p1.absolute().iterdir()))
# 创建目录
(p1/'d1/d2').mkdir(parents=True,exist_ok=True)
# 新建文件
(p1/'te.py').touch()
glob
# 显示所有文件 *通配符表任意次,不是正则
print(list(p5.glob('*')))
# 显示当前所有.py
print(list(p5.glob('*.py')))
# 显示当前目录下二级所有.py
print(list(p5.glob('*/*/*.py')
# 递归当前目录下所有*.py
print(list(p5.glob('**/*.py')
#当前目录下任意次目录所有 一个.py 如a.py
print(list(p5.glob('**/?.py')
for x in p5.parents[len(p5.parents)-2].iterdir():
if x.is_dir():
print('dir:',x)
flag=False
# for z in x.iterdir():
# flag=True
# break
# print('Not Empty' if next(x.iterdir(),0) else 'empty')
print('Not Empty' if next(x.iterdir(),0) else 'empty')
elif x.is_file():
print('file:',x)
else:
print('other',x)