Python文件自动分类

ops/2024/11/14 12:52:31/

假如这样的步骤全部手动做下来耗时是6秒,在文件数量不多的情况下,比如10个文件,总共耗时一分钟其实是能够接受的。
    但当文件数量特别多时,或者这个操作特别频繁每天都要做十几二十次时,手动操作就会变得耗时又繁琐,这时使用Python来解决优势就比较明显了:
1. 代码编写是一次性投入

2. 不论多少文件都只需要运行一次程序
3. 大量的文件执行也很快
4. 程序一直后台运行便可以自动处理

Firstpart:获取待分类文件列表,循环遍历

了解基础知识

现在我们常用的计算机系统分为Windows系统macOS系统

在开始动手解决问题之前,我们需要先学习一下与文件相关的基本概念。
路径(Path) 用来表示文件或文件夹的位置。
当我们需要访问文件或文件夹时,路径就像现实中的地址一样,帮助我们找到目标文件或文件夹在什么位置。

在Windows系统的路径中,我们使用反斜线“\”分隔各个文件夹和文件名。
同时,在路径的最前面,是
盘符的字母和一个英文冒号,表示文件或文件夹具体是在哪个盘的路径下。

而在macOS系统中,文件夹和文件名使用正斜线”\”进行分隔。
需要注意的是,macOS系统中,没有盘符的概念,所有的路径都是从根目录( / ) 开始。

不管是何系统,除了文件路径有所差异,其它的知识点和操作步骤都是通用的。

 

学习了路径相关的知识之后,让我们回到阿文要解决的问题:文件自动化分类。
os 模块可用于文件处理操作,os 模块是Python的内置模块,不需要安装可以直接导入。
我们要对文件进行处理,首先要使用 import 导入 os 模块。

代码展示

# 使用import导入os模块

import os

阿文把需要处理的文件下载下来,将文件保存到了路径: /Users/yequ/Downloads
如图所示:文件夹 Downloads 中有很多文件,例如:PDF、Word、Excel、图片、视频等等。
我们要获得 Downloads 文件夹中的文件名才能进行分类,接下来,学习获取文件夹所有文件名称的方法。

代码展示

阿文将文件保存到路径 /Users/yequ/Downloads,我们需要获取该文件夹下所有的文件列表。
先定义一个变量 downloadPath 并将文件夹路径以字符串的格式赋值给它。注意,变量名是区分大小写的。
使用Windows系统的同学在自己的电脑上运行代码时,需要注意路径前要加一个r表示字符串不需要转义
如:downloadPath = r"D:\yequ\Downloads"

# 使用import导入os模块

import os

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

downloadPath = "/Users/yequ/Downloads"

# 使用print输出downloadPath以检查赋值结果

print(downloadPath)

 

获取文件名(代码展示与解释)

接下来,将路径作为参数传入 os.listdir() 函数,就可以获得一个列表。并输出列表,查看 Downloads 中的所有文件或文件夹的名称。

# 使用import导入os模块

import os

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

downloadPath = "/Users/yequ/Downloads"

# 使用os.listdir()函数获取该路径下所有的文件或文件夹名称

allItems = os.listdir(downloadPath)

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

print(allItems)

1.获取所有文件的名称,需要使用 os 调用 listdir()函数。
示例中, os.listdir() 就表示调用 listdir() 函数执行获取所有文件的操作。

2. os.listdir() 函数中要求传入参数文件夹路径
示例中,要查看图片文件夹中所有的文件,该文件夹的路径为: /Users/图片 ,就将该路径传入到 os.listdir() 函数中。

3

. 使用 os.listdir() 函数获取文件名后,返回一个列表,列表中的每个元素是图片文件夹中的文件。

代码结果

查看输出结果,使用 os.listdir() 函数,会获得所有文件组成的列表,列表的每项都是一个文件。

使用for循环遍历所有文件(夹),并在循环内使用print
输出文件(夹)名

  

得到了所有的文件(夹)名称后,我们需要取出每个文件用于判断类型。使用for循环遍历列表中所有文件(夹)的名称,并输出,以便稍后去逐个判断。

# 使用import导入os模块

import os

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

downloadPath = "/Users/yequ/Downloads"

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

allItems = os.listdir(downloadPath)

# 使用for循环遍历所有文件(夹)

for item in allItems:

    # 使用print输出文件(夹)名称

    print(item)

接下来,我们要按照文件后缀名对文件进行分类。

这一部分内容明天讲解,欢迎大家指出不足


http://www.ppmy.cn/ops/107301.html

相关文章

学习计算机网络

a类0~127,b类128~191,c类192~223 网络地址:看子网掩码,分网络位和主机位,后面是主机位,主机位全部为0,网络地址。 直接广播地址:看子网掩码,分网络位和主机位&#xff…

Vue(十二) Vuex、四个map方法的使用、Vuex模块化+namespace命名空间

文章目录 一、Vuex前言:求和案例1. 搭建Vuex环境2. 基本使用3. 常见疑惑4. getters5. 四个map方法的使用(1) mapState(2) mapGetters(3) mapActions(4) mapMutations 6. 模块化命名空间namespace6.1 模块化6.2 模块化后读取数据 一、Vuex Vuex是一个Vue插件&#x…

探索Invoke:Python自动化任务的瑞士军刀

文章目录 探索Invoke:Python自动化任务的瑞士军刀背景:为何选择Invoke?invoke是什么?如何安装invoke?简单的invoke库函数使用方法场景应用:invoke在实际项目中的使用场景一:自动化测试场景二&am…

[Mamba_3]Swin-UMamba

题目:Swin-UMamba: Mamba-based UNet with ImageNet-based pretraining 中文题目:Swin-UMamba: 基于mamba的UNet与基于imagenet的预训练 贡献: 据我们所知,我们是第一个尝试发现基于曼巴的预训练网络在医学图像分割中的影响。我们的实验验证了基于imagenet的预训练在基于…

Java Web —— 扩展(Maven高级)

分模块设计与开发 未分模块设计的问题 不方便项目的维护和管理、项目中的通用组件难以复用 分模块设计 分模块设计就是将项目按照功能/结构拆分成若干个子模块,方便项目的管理维护、拓展,也方便模块 键的相互调用、资源共享。 继承与…

JavaScript 知识点(从基础到进阶)

🌏个人博客主页:心.c ​ 前言:JavaScript已经学完了,和大家分享一下我的笔记,希望大家可以有所收获,花不多说,开干!!! 🔥🔥&#x1f5…

Kafka命令

版本:3.6.0 1.kafka-topics.sh Create, delete, describe, or change a topic 创建、删除、描述或更改主题 查看所有topic kafka-topics.sh --bootstrap-server centos701:9092,centos702:9092,centos704:9092 --list 描述topic详情 kafka-topics.sh --boots…

Datawhale X 李宏毅苹果书 AI夏令营(深度学习 之 实践方法论)

1、模型偏差 模型偏差是指的是模型预测结果与真实值之间的差异,这种差异不是由随机因素引起的,而是由模型本身的局限性或训练数据的特性所导致的。 简单来讲,就是由于初期设定模型,给定的模型计算能力过弱,导致在通过…