python-pathlib
作者:互联网
python-pathlib
老式的os.path用法主要是函数形式,返回的数据类型通常是字符串。但是路径和字符串并不等价,所以在使用 os 操作路径的时候常常还要引入其他类库协助操作。新用法是面向对象,处理起来更灵活方便。
可以在不同系统进行路径操作, 文件路径分为 非实体路径和实体路径。
pathlib
基本操作
from pathlib import Path
p=Path(r"D:\ENNEW\OCR")
Path.cwd() # 返回当前目录
Path.home() # 返回用户主目录
Path.cwd().parent # 上级(父)目录
Path.stat() # 返回指定路径的相关信息
# parents是一个迭代器,每调用一次,目录向上一次。
for p in current_path.parents: 遍历得到整个父目录
print(p)
Path.iterdir() # 返回 Path 目录文件夹下的所有文件,返回的是一个生成器类型。
[x for x in p.iterdir() if x.is_dir()] 列出目录下的子目录
获得目录的不同部分
Path.resolve() # 返回绝对路径
目录拼接三种
name_path=Path(path, 'file1.txt')
newpath=Path(path).joinpath ('file1.txt')
Path('/') / Path('home') / 'dongwm/code'
路径的不同部分
Path.name # 返回文件名,包括后缀
Path.parent # 返回上级(父)目录
Path.parents # 返回上级(父)迭代器
Path.stem # 返回文件名,不包含后缀
Path.suffix # 返回后缀扩展名
Path.suffixes # 返回后缀扩展名列表
Path.anchor # 返回磁盘符
Path.with_name() # 替换文件名
Path.with_suffix() # 替换扩展名
Path.resolve() # 返回绝对路径
Path.relative_to(path) # 返回相对路径
filepath=Path('D:/tzxw/abc.png')
filepath.name # abc.png
filepath.parent # D:/tzxw
filepath.stem # abc
filepath.suffix # .png
filepath.suffixes # ['.png']
filepath.with_name('123.png') # /tzxw/123/png
filepath.with_siffix('.jpg') # /tzxw/abc.jpg
filepath.anchor # D:/
Path.resolve() # D:/tzxw/abc.png
创建删除目录
Path.mkdir() # 创建给定路径的目录。
Path.rmdir() # 删除该目录,目录文件夹必须为空
Path.touch() # 创建指定类型的
读写文件
DIR_PATH = pathlib.Path('D:/tzxw/abc.txt')
with DIR_PATH.open("r") as fs:
data = fs.read()
print(data)
-----------------
.read_text(): 以 encoding指定的编码方法读取,读成str格式。等同open操作文件的"r"格式。
.read_bytes(): 读取字节流的方式。等同open操作文件的"rb"格式。以二进制方法
.write_text(): 文件的写的操作,等同open操作文件的"w"格式。
.write_bytes(): 文件的写的操作,等同open操作文件的"wb"格式。
统计以匹配
Path.iterdir() # 返回 Path 目录文件夹下的所有文件,生成器类型。
Path.glob(model) # 返回 Path 目录文件夹下所有与 model 匹配的文件,返回的是一个生成器类型。
Path.rglob(model) # 返回 Path 路径下所有子文件夹中与 model 匹配的文件,返回的是一个生成器类型。
Path.match(model) # 返回 Path 路径下与 model 是否匹配,返回的是bool。
PY=[x for x in p.glob('*.py')] # 搜索出指定目录
print(PY)
# 使用 Path.iterdir() 获取当前文件下的所有文件,并根据后缀名统计其个数。
import pathlib
from collections import Counter
currentPath = pathlib.Path.cwd()
gen = (i.suffix for i in currentPath.iterdir())
print(Counter(gen))
os and path
os and os.path pathlib
os.path.abspath() Path.resolve()
os.chmod() Path.chmod()
os.mkdir() Path.mkdir()
os.rename() Path.rename()
os.replace() Path.replace()
os.rmdir() Path.rmdir()
os.remove(),os.unlink() Path.unlink()
os.getcwd() Path.cwd()
os.path.exists() Path.exists()
os.path.isdir() Path.is_dir()
os.path.isfile() Path.is_file()
os.path.join() PurePath.joinpath()
pathlib案例
统计文件个数
import pathlib
from collections import Counter
now_path = pathlib.Path.cwd()
gen = (i.suffix for i in now_path.iterdir())
print(Counter(gen))
gen =(p.suffix for p in pathlib.Path.cwd().glob('*.py'))
print(Counter(gen))
展示目录树
def tree(fpath):
print(f'+ {fpath}')
for path in sorted(fpath.rglob('*')):
depth = len(path.relative_to(fpath).parts)
spacer = ' ' * depth
print(f'{spacer}+ {path.name}')
获取文件最后一次修改时间
import pathlib
now_path = pathlib.Path.cwd()
from datetime import datetime
time, file_path = max((f.stat().st_mtime, f) for f in now_path.iterdir())
print(datetime.fromtimestamp(time), file_path)
标签:返回,python,pathlib,path,Path,os,目录 来源: https://www.cnblogs.com/tian777/p/14908988.html