python3.7 利用函数os pandas利用excel对文件名进行归类

  • Post category:Python

下面讲解一下如何使用Python3.7利用函数os和pandas对文件名进行归类。

一、准备工作

  1. 安装Python3.7版本

  2. 安装pandas模块

pip install pandas

二、实现代码

import os
import pandas as pd

file_list = os.listdir(r'文件夹路径')
df = pd.DataFrame(file_list, columns=['filename'])

df['ext'] = df['filename'].apply(lambda x: os.path.splitext(x)[1])
df['ext_group'] = df['ext']

# 设置需要进行文件夹归类的文件类型和文件夹名称
ext_dir = {
    '.jpg': '图片',
    '.png': '图片',
    '.gif': '图片',
    '.mp3': '音乐',
    '.flac': '音乐',
    '.wav': '音乐',
    '.mp4': '视频',
    '.avi': '视频',
    '.mov': '视频'
}

for k, v in ext_dir.items():
    if k in df['ext_group'].tolist():
        if not os.path.exists(r'文件夹路径\\{}'.format(v)):
            os.makedirs(r'文件夹路径\\{}'.format(v))
        group_df = df[df['ext_group'] == k].reset_index(drop=True)
        for i in range(group_df.shape[0]):
            old_full_name = r'文件夹路径\\{}'.format(group_df.loc[i, 'filename'])
            new_full_name = r'文件夹路径\\{}\\{}'.format(v, group_df.loc[i, 'filename'])
            os.rename(old_full_name, new_full_name)
            print('{} -> {}'.format(old_full_name, new_full_name))

三、代码详解

代码中第2行使用os.listdir()函数获取指定路径下的所有文件名,并将文件名列表存在变量file_list中。

接下来使用Pandas模块创建一个DataFrame,df.columns = ['filename']指定DataFrame的列名为filename。DataFrame是一种二维表格数据结构,它可以存储各种类型的数据,并且提供了大量的数据操作功能。

创建DataFrame后,我们使用apply()函数将文件拓展名作为一列ext加入到DataFrame中。os.path.splitext()函数可以将文件名拆分成文件名及其拓展名,同时将分离后得到的拓展名存放到ext列中。

ext_dir指定了需要进行文件夹归类的文件类型和对应的文件夹名称。此时我们可以在ext_dir中添加自己需要归类的文件类型。

在对df进行处理后,我们使用for循环将文件夹归类过程进行了自动化处理,os.path.exists()函数判断目标文件夹是否存在,os.makedirs()函数创建不存在的目录。然后定位拓展名为k的文件列表,使用循环重命名这些文件,并将它们移动到对应的目标文件夹。

四、示例说明

例如有如下文件:

  1. abc.mp3
  2. 123.mov
  3. test.png
  4. 456.jpg
  5. hello.txt
  6. world.xlsx

按照我们上面的代码进行文件夹归类后,文件夹结构应该为:

  • 音乐
  • abc.mp3
  • 视频
  • 123.mov
  • 图片
  • test.png
  • 456.jpg
  • hello.txt
  • world.xlsx

以上就是Python3.7利用函数os和pandas对文件名进行归类的完整实例教程,希望对大家有所帮助。