Python之文件与文件夹操作

目录

    • 1、Pathlib
      • 1.1、glob(),rglob()
      • 1.2、目录拼接
      • 1.3、重命名
      • 1.4、复制文件
    • 2、os
    • 3、os.path
    • 4、示例

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)

Python之文件与文件夹操作_第1张图片

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 路径是否指向一个已存在的文件或目录,返回 TrueFalse
Path.is_dir(),判断 Path 是否是一个路径,返回 TrueFalse
Path.is_file(),判断 Path 是否指向一个文件,返回 TrueFalse
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)

Python之文件与文件夹操作_第2张图片

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())

Python之文件与文件夹操作_第3张图片

2、os

Python之文件与文件夹操作_第4张图片

3、os.path

Python之文件与文件夹操作_第5张图片

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')

Python之文件与文件夹操作_第6张图片

你可能感兴趣的:(Python,python,windows,开发语言)