Python 办公效率化学习(自学)一文件自动分类

目录

文件自动分类:

一.步骤解析

二,具体操作 

(1)获取待分类文件列表

(2)遍历所有文件名 

  (3)判断文件类型

 (4)判断对应分类文件夹是否存在

(5)创建文件夹并移动文件


文件自动分类:

一.步骤解析

1.获取待分类文件列表
2.循环遍历文件列表中的所有文件
3.判断文件类型
4.对应分类文件夹还未创建时,创建文件夹
5.移动文件到对应文件夹

二,具体操作 

(1)获取待分类文件列表

1.路径

(2)遍历所有文件名 

 获取文件列表,首先要导入Os模块

 获取所有文件的名称,需要使用 os 调用 listdir()函数

os.listdir() 函数中要求传入参数文件夹路径。

 

# 使用import导入os模块
import os

# 文件夹路径 /Users/yequ/Downloads 赋值给变量downloadPath
downloadPath = "/Users/yequ/Downloads"

# TODO 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems
allItems = os.listdir(downloadPath)

# TODO 使用print函数输出变量allItems以确认列表内容
print(allItems)

 3)判断文件类型

1.引入概念:后缀名

文件后缀名又叫文件扩展名(File extension),可以用来判断某一个文件属于什么类型。

在文件名中,点号,也就是英文句号( . )和其后面的部分即是文件后缀名。

 常见文件后缀名:

2. 将文件名与后缀名分割

使用 os.path.splitext() 函数就能对文件进行分隔操作。

使用 os.path.splitext() 函数对文件进行分隔后,返回的是一个元组。

例如:对文件"主持人_试音.mp3"进行分隔后,输出的是 ('主持人_试音', '.mp3')。

元组的第一项是文件名称,元组的第二项是文件后缀名。

 3.根据后缀名判断文件类型

  方法一:if or

 方法二:in   (用于简化一种文件类型有多个后缀名)

print(2 in [1,2,3,4,5])
print(9 in [1,2,3,4,5])
print("中" in ["东","西","南","北"])
True
False
False

 (4)判断对应分类文件夹是否存在

1.首先合并路径

在代码中,使用 os.path.join() 函数来拼接每个分类文件夹的路径。

该函数需要传入两个参数,将两个参数拼接起来组成目标路径。

例如:需要将某个文件夹保存到电脑的桌面上,文件的名称是音频文件。

桌面的路径为: /Users/Desktop
文件夹名字为:"音频文件"
使用 os.path.join() 就能拼接成文件夹的路径。

# 使用import导入os
import os

# 使用os.path.join()函数合并"/Users/Desktop"和"音频文件"文件夹并赋值给变量targetPath
targetPath = os.path.join("/Users/Desktop", "音频文件")

# 使用print输出变量targetPath
print(targetPath)

2.判断是否已存在

得到了目标文件夹的路径后,我们可以使用 os.path.exists() 函数来判断该文件夹是否已经存在。

os.path.exists() 函数接受一个路径字符串作为参数,当该路径的文件夹存在时,返回True,不存在时,则返回False。 

 输入:

import os

print(os.path.exists("/Users/yequ/Downloads/PDF文件"))
print(os.path.exists("/Users/yequ/Downloads/音频文件"))

输出: 

True
False

 

(5)创建文件夹并移动文件

1.创建文件夹

如果文件夹不存在,我们需要先创建文件夹,再移动文件。
创建文件夹可以使用 os.mkdir() 函数:将要创建的文件夹路径作为参数传入函数中即可。

在开始正式移动文件到目标文件夹之前,我们需要再思考一个问题。

在代码运行之前,文件夹里已经存在一些分类文件夹了,比如图例中“PDF文件”这个文件夹就是已经存在的。

这样的话,在程序运行时,按目前的逻辑,计算机就会把这个文件夹分类为其他文件,因为这个文件夹没有后缀名。

 为了避免将文件夹移动到其他文件中,我们需要先判断该文件是否是文件夹,不是文件夹再移动。

我们将要进行判断的文件路径传入到 os.path.isdir() 函数中,如果该路径是文件夹就会返回True,如果不是就返回False。

2.移动文件

要想移动文件,我们需要导入Python中另一个内置的模块 shutil ,然后使用 shutil.move() 函数来对文件进行移动。

shutil.move() 函数可以用来移动文件或文件夹。它接收两个参数,第一个参数是要移动的文件(夹)路径,第二个参数是目标文件(夹)的路径。

 三.总代码

# 使用import导入os模块
import os

# TODO 使用import导入shutil模块
import shutil

# TODO 将下载文件夹路径 /Users/yequ/Desktop 赋值给变量desktopPath
desktopPath = "/Users/yequ/Desktop"

# 使用os.listdir()函数获取该路径下所有的文件(夹),并赋值给变量allItems
allItems = os.listdir(desktopPath)

# 使用for循环遍历所有文件(夹)
for item in allItems:
    # 获取文件后缀名
    extension = os.path.splitext(item)[1].lower()

    # TODO 定义一个变量targetPath,用来表示准备移动到的文件夹路径
    targetPath = ""
    if extension in [".jpg", ".jpeg", ".gif", ".png", ".bmp"]:
        # TODO 使用os.path.join()函数拼接分类文件夹路径:图片文件
        # 并赋值给变量targetPath
        targetPath = os.path.join(desktopPath,"图片文件")
    elif extension in [".avi", ".mp4", ".wmv", ".mov", ".flv"]:
        # TODO 使用os.path.join()函数拼接分类文件夹路径:视频文件
        # 并赋值给变量targetPath
        targetPath = os.path.join(desktopPath,"视频文件")
    elif extension in [".wav", ".mp3", ".mid", ".ape", ".flac"]:
        # 使用os.path.join()函数拼接分类文件夹路径:音频文件
        targetPath = os.path.join(desktopPath, "音频文件")
    elif extension in [".pdf"]:
        # 使用os.path.join()函数拼接分类文件夹路径:PDF文件
        targetPath = os.path.join(desktopPath, "PDF文件")
    elif extension in [".docx", ".doc"]:
        # 使用os.path.join()函数拼接分类文件夹路径:Word文件
        targetPath = os.path.join(desktopPath, "Word文件")
    elif extension in [".xlsx", ".xls"]:
        # 使用os.path.join()函数拼接分类文件夹路径:Excel文件
        targetPath = os.path.join(desktopPath, "Excel文件")
    elif extension in [".pptx", ".ppt"]:
        # 使用os.path.join()函数拼接分类文件夹路径:PPT文件
        targetPath = os.path.join(desktopPath, "PPT文件")
    else:
        # 使用os.path.join()函数拼接分类文件夹路径:其他文件
        targetPath = os.path.join(desktopPath, "其他文件")
    # TODO 使用os.path.exists()函数判断当如果目标文件夹不存在
    if not os.path.exists(targetPath):
        # TODO 使用os.mkdir()函数创建文件夹
        os.mkdir(targetPath)

    # TODO 使用os.path.join()函数拼接desktopPath和文件名
    # 并赋值给变量itemPath
    itemPath = os.path.join(desktopPath,item)

    # TODO 使用函数os.path.isdir()判断当itemPath不是文件夹时。
    if not os.path.isdir(itemPath):
        # TODO 使用shutil.move()函数移动文件到targetPath路径
        shutil.move(itemPath,targetPath)

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值