下面讲解一下如何使用Python3.7利用函数os和pandas对文件名进行归类。
一、准备工作
-
安装Python3.7版本
-
安装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的文件列表,使用循环重命名这些文件,并将它们移动到对应的目标文件夹。
四、示例说明
例如有如下文件:
- abc.mp3
- 123.mov
- test.png
- 456.jpg
- hello.txt
- world.xlsx
按照我们上面的代码进行文件夹归类后,文件夹结构应该为:
- 音乐
- abc.mp3
- 视频
- 123.mov
- 图片
- test.png
- 456.jpg
- hello.txt
- world.xlsx
以上就是Python3.7利用函数os和pandas对文件名进行归类的完整实例教程,希望对大家有所帮助。