1、Pathlib
# 通过cwd()获得当前工作目录
# 通过home()获得主目录
from pathlib import Path
currentPath = Path.cwd()
print(f"Current directory: {currentPath}")
print(f"Home directory: {Path.home()}")
Current directory: E:\pycharm_python\demo01
Home directory: C:\Users\Dell
实例:获取当前文件下的所有文件,并根据后缀名统计其个数。
from pathlib import Path
path = Path.cwd()
# suffix获取后缀名
g = (i.suffix for i in path.iterdir())
# print(list(g))
d = dict()
for ch in list(g):
d[ch] = d.get(ch, 0) + 1
print(d)
1.1、glob(),rglob()
from pathlib import Path
p = Path.cwd()
print()
# 返回当前目录中的所有文件和文件夹
for i in p.glob(r"*"):
print(i)
print()
# 返回当前目录,及所有子目录中的所有文件和文件夹
for i in p.rglob("*"):
print(i)
print()
# 返回当前目录,及其下所有子目录中的 所有文件夹
for i in p.glob(r"**"):
print(i)
# 获取当前文件下的所有 txt 文件
g = (i.suffix for i in p.glob('*.txt'))
print(list(g))
Path.exists(),判断 Path 路径是否指向一个已存在的文件或目录,返回 True 或 False
Path.is_dir(),判断 Path 是否是一个路径,返回 True 或 False
Path.is_file(),判断 Path 是否指向一个文件,返回 True 或 False
Path.unlink(),删除文件
1.2、目录拼接
from pathlib import Path
path = Path.cwd() / 'new' # 目录拼接
try:
if path.exists() and path.is_dir():
path.rmdir() # 删除空目录
path.mkdir() # 创建目录
except Exception as ex:
print(ex)
1.3、重命名
from pathlib import Path
try:
path = Path('hello.txt')
path.rename('1.txt')
except Exception as ex:
print(ex)
1.4、复制文件
from pathlib import Path
src = Path('1.txt')
dest = Path('hello.txt')
if not dest.exists():
dest.touch() #创建一个新的空文件
dest.write_text(src.read_text())
2、os
3、os.path
4、示例
编写程序,递归删除指定目录及子目录中指定类型的文件和大小为0的文件
from os.path import isdir, join, splitext
from os import remove, listdir, chmod, stat
filetypes = ('.png', '.log', '.obj', '.txt') #指定要删除的文件类型
def delCertainFiles(directory):
if not isdir(directory): #是否是一个路径
return
for filename in listdir(directory):
temp = join(directory, filename)
if isdir(temp):
delCertainFiles(temp) #递归调用
elif splitext(temp)[1] in filetypes or stat(temp).st_size==0:
chmod(temp, 0o777) #修改文件属性,获取删除权限
remove(temp) #删除文件
print(temp, ' deleted....')
delCertainFiles(r'E:\pycharm_python\demo01')