python实现文件分类_Python 文件分类

好久没有更新啦,今天分享一小段代码来实现对文件的分类。实现的效果:将文件夹(SoftwareDevelopment)中的文档、代码、图片等复制一份到指定的目录中归类。知乎视频​www.zhihu.com导入内置库

import os,shutil,timeos : 用户判断文件是否为目录 ,以及文件是否存在✅。

shutil:对文件 进行copy操作

time:记录 程序运行时间⌚️

2. 构建函数

def FileSort(dir_name):

dir_list = []

Development_target = r'/Users/kkming/Development'

Document_target = r'/Users/kkming/Document'

Other_target = r'/Users/kkming/Other'

#列出将当前目录下所文件,文件夹

All_file = os.listdir(dir_name)

for file_name in All_file:

absolute_path = dir_name + "/" + file_name

if os.path.isdir(absolute_path):

dir_list.append(absolute_path)

elif absolute_path[-5:]=='.java' or absolute_path[-3:] == '.py' or absolute_path[-2:] == '.c':

shutil.copy(absolute_path,Development_target)

print('{:}'.format(absolute_path,'Copy',Development_target))

elif absolute_path[-4:] in ['.doc','.PPT','.pdf'] or absolute_path[-5:] == '.xlsx':

shutil.copy(absolute_path,Document_target)

print('{:}'.format(absolute_path, 'Copy', Document_target))

else:

shutil.copy(absolute_path,Other_target)

print('{:}'.format(absolute_path, 'Copy', Other_target))这段代码的逻辑很简单,我们将需要归类的文件夹中所有文件 +文件夹 都一一列出,并拼接它们的绝对路径。然后基于文件的后缀名称进行判断,通过if-elif-else的逻辑结构将它们分好类,并加入到指定的目标文件夹中。

真实的环境中,我们在一个文件夹中可能包含很多子文件夹,这里我们需要使用递归的方式来让函数调用自己去完成子文件夹中文件的分类。

for dir_path in dir_list:

os.chdir(dir_path)

FileSort(dir_path)最后我们提示用户输入指定的归类目录,在这里我们添加上try-except的逻辑结构,增加程序的稳定性,避免给用户恶劣的报错体验。其中我们还使用OS模块添加了一个小小的判断,来确认文件夹是否真实存在。

try:

source = input('Please input you want to sort of Folder:')

if os.path.exists(source):

FileSort(source)

print('Total Time:{:.2f}'.format(time.perf_counter() - start))

else:

print('The Folder you entered does not exist')

except:

print('Your input is incorrect,Please refer:/Users/kkming/SoftwareDevelopment')

3. 完整代码

import os,shutil,time

start = time.perf_counter()

"""

定义文件夹处理函数

"""

def FileSort(dir_name):

dir_list = []

Development_target = r'/Users/kkming/Development'

Document_target = r'/Users/kkming/Document'

Other_target = r'/Users/kkming/Other'

#列出将当前目录下所文件,文件夹

All_file = os.listdir(dir_name)

for file_name in All_file:

absolute_path = dir_name + "/" + file_name

if os.path.isdir(absolute_path):

dir_list.append(absolute_path)

elif absolute_path[-5:]=='.java' or absolute_path[-3:] == '.py' or absolute_path[-2:] == '.c':

shutil.copy(absolute_path,Development_target)

print('{:}'.format(absolute_path,'Copy',Development_target))

elif absolute_path[-4:] in ['.doc','.PPT','.pdf'] or absolute_path[-5:] == '.xlsx':

shutil.copy(absolute_path,Document_target)

print('{:}'.format(absolute_path, 'Copy', Document_target))

else:

shutil.copy(absolute_path,Other_target)

print('{:}'.format(absolute_path, 'Copy', Other_target))

#使用递归的方式处理子目录

for dir_path in dir_list:

os.chdir(dir_path)

FileSort(dir_path)

try:

source = input('Please input you want to sort of Folder:')

if os.path.exists(source):

FileSort(source)

print('Total Time:{:.2f}'.format(time.perf_counter() - start))

else:

print('The Folder you entered does not exist')

except:

print('Your input is incorrect,Please refer:/Users/kkming/SoftwareDevelopment')

4. 代码输出

5. 效果展示

-待归类目录:SoftwareDevelopment

-归类后目录:Development

-归类后目录:Document

-归类后目录:Other

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值