Pathlib 是一个用于处理文件路径的 Python 库,提供了许多实用的函数和方法来处理文件系统路径。它提供了一个面向对象的层次结构,路径被表示为对象,这些对象拥有一些属性和方法,使得文件路径的操作变得更加直观和方便。
1、获取当前目录
# -*- coding:utf-8 -*-
from pathlib import Path
print(Path.cwd()) # 返回当前目录
print(Path.home()) # 输出用户家目录
> 运行结果:
C:\Users\caiya\Desktop\work\demo
C:\Users\caiya
2、获取上级目录
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"C:\Users\caiya\Desktop\work\demo\temp\123.txt"
res = Path(filename)
print(res.parent) # 返回上级目录
print(res.parents) # 返回上级目录列表(可进行迭代)
> 运行结果:
C:\Users\caiya\Desktop\work\demo
<WindowsPath.parents>
3、文件拆分
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"C:\Users\caiya\Desktop\work\demo\temp\123.txt"
res = Path(filename)
print(res.name) # 获取文件名
print(res.stem) # 获取文件名前缀
print(res.suffix) # 获取文件名后缀
> 运行结果:
123.txt
123
.txt
4、判断目录是否存在,不存在则创建
# -*- coding:utf-8 -*-
from pathlib import Path
name = r"test"
res = Path(name)
# 判断对象是否存在,对象:文件或目录
if not res.exists():
res.mkdir()
print("目录不存在,已经创建完成")
5、判断目录是否存在,不存则创建(递归创建)
# -*- coding:utf-8 -*-
from pathlib import Path
name = r"111\222\333"
res = Path(name)
# 判断对象是否存在,对象:文件或目录
if not res.exists():
res.mkdir(parents=True)
print("目录不存在,已经创建完成")
6、获取文件属性
# -*- coding:utf-8 -*-
from pathlib import Path
import time
filename = r"demo.txt"
res = Path(filename)
# 格式化时间戳
def format_time(s):
local_time = time.localtime(s)
format_time = "%Y-%m-%d %H:%M:%S"
now_time = time.strftime(format_time, local_time)
return now_time
t = res.stat()
print(f"文件大小:{t.st_size}")
print(f"文件创建时间:{format_time(t.st_ctime)}")
print(f"文件修改时间:{format_time(t.st_mtime)}")
print(f"文件访问时间:{format_time(t.st_atime)}")
> 运行结果
文件大小:11
文件创建时间:2023-01-17 14:01:41
文件修改时间:2023-01-17 14:01:41
文件访问时间:2023-01-17 14:01:41
7、文件重命名
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"demo.txt"
res = Path(filename)
# 文件重命名
res.rename(r"demo_test.txt")
8、删除文件
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"demo.txt"
res = Path(filename)
# 删除文件
if res.is_file():
res.unlink()
print("删除成功")
else:
print("文件不存")
9、删除文件夹
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"test"
res = Path(filename)
if res.is_dir():
res.rmdir()
print("删除成功")
else:
print("文件夹不存在")
10、删除非空文件夹
# -*- coding:utf-8 -*-
from pathlib import Path
import shutil
filename = r"111"
res = Path(filename)
if res.is_dir():
shutil.rmtree(filename)
print("删除成功")
else:
print("文件夹不存在")
11、遍历文件和文件夹
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"dist"
res = Path(filename)
for item in res.rglob("*"):
print(item)
运行结果:
dist\系统小工具助手
dist\系统小工具助手\base_library.zip
dist\系统小工具助手\d3dcompiler_47.dll
dist\系统小工具助手\images
dist\系统小工具助手\libcrypto-1_1-x64.dll
dist\系统小工具助手\libcrypto-1_1.dll
dist\系统小工具助手\libeay32.dll
dist\系统小工具助手\libEGL.dll
12、遍历文件夹
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"dist"
res = Path(filename)
for item in res.rglob("**"):
print(item)
运行结果
dist
dist\系统小工具助手
dist\系统小工具助手\images
dist\系统小工具助手\PyQt5
dist\系统小工具助手\PyQt5\Qt5
dist\系统小工具助手\PyQt5\Qt5\plugins
dist\系统小工具助手\PyQt5\Qt5\plugins\audio
dist\系统小工具助手\PyQt5\Qt5\plugins\bearer
dist\系统小工具助手\PyQt5\Qt5\plugins\geoservices
13、遍历文件
# -*- coding:utf-8 -*-
from pathlib import Path
filename = r"dist"
res = Path(filename)
for item in res.rglob("*"):
temp_file = Path(item)
if temp_file.is_file():
print(item)
运行结果
dist\系统小工具助手\base_library.zip
dist\系统小工具助手\d3dcompiler_47.dll
dist\系统小工具助手\libcrypto-1_1-x64.dll
dist\系统小工具助手\libcrypto-1_1.dll
dist\系统小工具助手\libeay32.dll
dist\系统小工具助手\libEGL.dll
dist\系统小工具助手\libGLESv2.dll
dist\系统小工具助手\libssl-1_1-x64.dll
dist\系统小工具助手\MSVCP140.dll
dist\系统小工具助手\MSVCP140_1.dll