Python之文件系统操作(pathlib)

"""
    文件相关操作(pathlib)
    date:2023-01-29
"""
from pathlib import Path

# 获取当前工作目录
print(Path.cwd())  # D:\workspace\py\python_demo\root\demo\study_demo\file_demo

p = Path(Path.cwd())  # 实例化
p = p / "pathlib_demo.py"  # 组装文件路径
print(p)  # D:\workspace\py\python_demo\root\demo\study_demo\file_demo\pathlib_demo.py

print(p.is_dir())  # False
print(p.is_file())  # True
print(p.exists())  # True
print(p.name)  # 文件名包含后缀 pathlib_demo.py
print(p.stem)  # 文件名不包含后缀 pathlib_demo
print(p.suffix)  # 后缀名 .py
print(p.parent)  # 父级目录 D:\workspace\py\python_demo\root\demo\study_demo\file_demo
print(p.parents)  # 父级目录序列对象,可通过索引值访问 <WindowsPath.parents>
for pp in p.parents:
    print(pp)
"""
D:\workspace\py\python_demo\root\demo\study_demo\file_demo
D:\workspace\py\python_demo\root\demo\study_demo
D:\workspace\py\python_demo\root\demo
D:\workspace\py\python_demo\root
D:\workspace\py\python_demo
D:\workspace\py
D:\workspace
D:\
"""

print(p.stat())  # 文件状态
print(p.stat().st_size)  # 文件大小(字节)

cp = Path(".")  # 当前路径
Path("..")  # 父级路径

print(cp.iterdir())  # <generator object Path.iterdir at 0x000001A170595F90>
for pp in cp.iterdir():
    """输出当前目录下所有文件和文件夹"""
    print(pp)

# 创建目录
cp = Path()
cp = cp / "dir"
cp.mkdir(parents=True, exist_ok=True)  # 新建目录,自动创建父级目录、目录已存在不报错

# 创建文件
cp = cp / "file.txt"
f = cp.open("w")
f.writelines("hello")
f.close()

# 修改文件名称
cp_new = cp.parent / "file_new.txt"
cp.rename(cp_new)  # file.txt -> file_new.txt

# 删除文件
cp_new.unlink()
# 删除目录
cp_new.parent.rmdir()

# 查找文件
p = Path()
print(list(p.glob("*.py")))  # 搜索当前目录下所有py后缀的文件
print(list(p.glob("**/*.py")))  # 搜索当前目录及其子目录下所有后缀py的文件
l = [x.name for x in p.glob("*.py") if x.is_file() & x.name.startswith("file")]  # 列表推导式查询指定文件的名称
print(l)  # ['file_demo.py']

 

posted @ 2023-02-01 17:45  星瑞  阅读(58)  评论(0编辑  收藏  举报