社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用 Python 高效智能管理文件夹

Python中文社区 • 4 年前 • 779 次点击  



大家在写报告、写总结时,是否会先去翻一下以前写过的类似的东西?是否有看过比较好的文章,想保存时却为归类而纠结?是否电脑里的文件越来越多,想删掉一些却又舍不得?身处大数据和人工智能的时代,如何节约时间,提高工作效率,快速积累知识并使用知识呢?本文分享一种知识整理术,并提供一个实用的小工具。

一、认识“元认知”

知识是什么,在信息时代之前,知识大部分依存于记忆;在信息时代初,知识主要变成了一种能搜索和利用信息的能力;而随着信息化的深入,个人要获取各种知识越来越容易,因此我们需要一种是整合内外部资源,结构化管理多种知识的技能。

也就是说,我们要强化我们的元认知,来管理好自己的技能库。元认知是美国心理学家J.H.Flavell在1976年提出的概念,意思是“反映或调节认知活动的任一方面的知识或认知活动,即认知的认知”。本文通俗地把其定义为一种高效学习知识、使用知识的技能。

二、使用笔记,节约认知资源,节约认知资源,更新知识树更新知识树

不断学习不断遗忘,是人的天性。遗忘也让宝贵的认知资源及时回收,让人脑轻装上阵,随时保持良好的状态。但是我们真的要抛弃以前做过的事情,或者说遗忘知识吗?不是的,人生不是小说创作,我们也不知道自己的终极技能是什么,向前走一步才能看到下一步的路,我们不能轻易遗忘,要做好笔记。随着经历增加,知识在不断积累,小心养好自己的知识树。世事迁移,某些枝叶可能变成主干,某些主干也可能变成枝叶。把过程保存下来,不仅能看到自己的进步,也能看到自己所朝着的方向,岂不很有意义?

如果把人脑比作电脑,人的记忆就是内存,容量小而响应速度快,而外部笔记就是硬盘。

要降低人脑的记忆负荷,就要更好的利用硬盘。硬盘读写速度越快越好,同理,好的笔记方法要能快速记录,方便查询,和结构化展示。现在市场上几乎没有集3个优点合一的笔记方法。要么是写入太麻烦,要么是查找不方便,能够结构化展示内容的更少。

三、高效管理文件夹的方法,就是最好的笔记

要快速记录笔记,最好的方法就是让程序自动做”笔记”。把自己曾经做过的事情,按结构存放于各个文件夹中,自然就做成自己的知识树了。不知道大家有没有用过思维导图,我曾经很热衷于这样的结构工具,但它一个是要收费;而且画出如下的结构图(仅是举例,内容不重要)只能完全手动,花费时间长;最后它不开源,不能个性化新增功能。

我这个程序的设想就是制作类似思维导图功能的工具,但最大优点是自动化,只要把这个工具放入所在文件夹中,就能根据文件夹结构生成图谱。还强化了文件夹的个性化操作功能。例如在某些文件夹或文件上标注“待处理”文字的话,能够将该文件名放置到待处理区域,提醒用户办理。整体界面如下:

这个程序有如下的本地文件夹管理功能:

(一)能自动画出文件结构图,展开缩放。按照最近编辑时间先后排序。

(二)使用本程序打开本地文件夹。

(三)展示所有文件的最近编辑时间。

(四)展示待处理文件,提示待办事项。

(五)可以根据关键词在目标文件夹中查找文件内容。例如深入查找docx文件中的段落,和python程序中的代码。

四、各步骤及核心代码

思路是用python的os库分析文件结构,用python的flask作为后台建立本地服务器,用html做前台展示界面,实现交互功能。文件结构如下,主程序为flaskhtml.py,在templates里面放上home.html,html中的文件结构图采用echarts的tree图。

(一)使用python的os库分析文件结构。将这个结构保存为dataframe格式。这

部分关键就是要写个循环,遍历到所有文件夹的最内层。用os.listdir获取文件名list,把文件名记录到一个dataframe,核心代码如下:

1.获取第二层文件夹名字(第一层就是默认以“我的文件夹”为名)


2.用循环获取第三层直至最后一层的文件夹名字(再次用os.listdir打开储存在dataframe中的文件夹路径,获取该链接下的文件名,如果本层级的所有文件夹下面都没有文件了,就跳出循环;否则就继续深入。)

我这里先设定了深入到20层,一般文件夹用不到20层,就会结束循环。


3.获取文件的最近一次修改时间


4.最终得到如下的层级结构


(二)将dataframe(df)转化成符合tree图要求的list格式数据。

tree图中,每个点的属性有三个:name,value,children。name是某个点的名字,value是该点的自定义内容,我把每个文件夹的链接地址和修改时间储存到value中。每一个点不一定都有childeren属性,它是包含该点下一层级支点的信息,下一层支点又可以带有以上三个属性。

也是类似地按照第一步一层层地将dataframe转变成list,不同的是,第一步的层级结构是要从文件夹里分析出来的,这一步是从那个df里面读取的。

(三)在html中增加其他功能的按钮,使其能和本地python程序交互。例如根据文件夹路径打开文件夹;根据搜索的关键词,查找本地文件夹名字或者文件内容。


(四)最后,使用flask搭建本地服务器,在浏览器上使用本软件。

用flask将本地处理好的数据上传到html。运行flaskhtml.py之后,出现如下界面,就代表本地网站服务器已经运行了,打开浏览器,输入网址127.0.0.1:5000,就可以打开主页面了。


作者:杨炳,心理学者在银行写代码。


赞 赏 作 者



Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。



推荐阅读:
一文读懂高并发情况下的常见缓存问题
用 Django 开发基于以太坊智能合约的 DApp
一文读懂 Python 分布式任务队列 celery
5 分钟解读 Python 中的链式调用
用 Python 创建一个比特币价格预警应用


▼点击成为社区会员   喜欢就点个在看吧

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/69937
 
779 次点击