杂乱文件自动分类

时间:2022-07-22
本文章向大家介绍杂乱文件自动分类,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在数据清理或者实证过程中,常常会有大量的文档、表格和图片等。疏于整理的话,文件夹中文件就会五花八门。下图是不是太过真实?

如果想将文件分类整理,你会怎么做呢?Ctrl+XCtrl+V?听起来好费眼睛啊。有没有什么酷一点的方式?Talk is cheap, show me your code 。本文先使用 Stata 和 Python 写代码来处理,然后推荐一款 Windows 系统的文件管理神器 DropIt 。

分析问题

在动手写代码之前,先来分析一下这个问题:后缀是识别文件类别的重要标志。所以,可以使用后缀作为分类依据。如果以该文件后缀命名的文件夹存在,则移动进去;如果不存在,先新建该文件后缀的文件夹,再将文件移动进去。实现思路可以用如下流程图描述:

实现过程

Stata 实现

使用 Stata 的思路是通过两次遍历。首先遍历文件名,提取后缀,创建文件夹;之后再通过文件后缀判断,将文件移动到相应的文件夹。实现代码如下:

cd "..files"

* Create Folders
fs
foreach file in `r(files)'{
	local folder =  ustrregexrf("`file'","^.*.","",.)
	cap mkdir "`folder'"
	}

* Move Files
fs
foreach file in `r(files)'{
	local type =  ustrregexrf("`file'","^.*.","",.)
	if ustrregexrf("`file'","^.*.","",.) == "`type'"{
		!move "`file'" "`type'"
		}
	}

Python 实现

之前在 鱼哥的文章 里面看到过类似需求的实现思路:使用 os 库读取后缀、判断文件夹是否存在,使用 shutil 库来操作文件。实现代码如下:

import os
import shutil

os.getcwd()
os.listdir()
os.chdir("../files")

for f in files:
    folder = f.split('.')[-1]
    if not os.path.exists(folder):
        os.mkdir(folder)
        shutil.move(f, folder)
    else:
        shutil.move(f, folder)

实现效果

以 Stata 运行过程为例,看看实现效果。怎么样?是不是看起来还比较“酷炫”?

DropIt:文件自动分类管理工具

DropIt 是一款源于国外的开源、免费软件,似乎仅支持 Window 系统。预先设定好协议(规则),轻松拖拽就可以将文件自动分类。可前往 DropIt 官网[1] 下载体验,软件非常轻量,安装包只有 5.1 M 。我们来看看处理任务的效果:

除了能自动分类外,它还支持批量压缩文件、给重要的文件加密、文件转格式和批量处理图片等功能。根据使用习惯,可以打造个人全自动的文件管理系统。

小结

本文围绕杂乱文件自动分类的问题,分别使用 Stata 和 Python 编写代码来实现需求,然后推荐一款 Windows 系统的文件管理神器。通过这篇文章,是不是感觉在日益依赖电脑的学习和办公环境下,能够写点代码实现需求,可以节约时间和提高效率。再者,“工欲善其事,必先利其器”,多关注和使用一些良心的神器,也会极大的提高工作效率。

公众号后台聊天窗口回复【分类】获取本文演示数据、代码和 DropIt 安装程序。

参考资料

[1]

DropIt 官网: http://www.dropitproject.com/

[2]

Crash Course: How to start with DropIt: http://www.dropitproject.com/dokuwiki/doku.php?id=howto:start_with_dropit

[3]

用 DropIt 打造全自动的 Windows 文件管理体系: https://sspai.com/post/45532