前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mini文件搜索工具

mini文件搜索工具

作者头像
stormwen
发布2019-08-05 20:16:37
1K0
发布2019-08-05 20:16:37
举报
文章被收录于专栏:公众号:googpy公众号:googpy

今天和大家分享一个关于文件处理的小项目,对大家熟练掌握文件处理的知识很有帮助。

每个人电脑上都安装了Python,无论是py2.7还是py3.7。以我安装的py3.7为例,搜索整个py3.7下面的所有目录(包括子目录),里面的所有文件:

(1)统计出整个py3.7目录下一共有多少个文件夹和文件

(2)找到文件容量最大的文件

(3)找到文件名最长的哪个文件

大家在取文件的最大、最小这样的需求的时候,可能会想到c,c++的思想,其实python的列表非常灵活,可以用很多高效快捷的方法去取最大值。

对于python我们需要考虑它的性能,特别是对于数量大的处理任务的时候,如何更快更省是需要斟酌的,另一个就是安全:比如列表越界,文件判断存不存在,读写异常等等。

函数的扩展性也是我们在写代码需要考虑的一个因素。比如我们现在的需求变了,需要计算目录下所有文件的大小,占了多少空间,最大的文件的路径,一旦需求变了,如果代码封装的不够好,就要重构。

下面是我参考了一个大佬的思路,自己理解后编的代码,欢迎小伙伴拍砖。

下面是运行的结果

看到这个题目,只要有点基础的小伙伴,肯定能想到os.walk这个函数,确实这个轮子是现成的,而且安全方便。下面就介绍一下os.walk()这个函数。

os.walk()用于通过在目录树中游走输出在目录中的文件名,向上或者向下。

os.walk()是一个简单易用的文件、目录遍历器,可以帮我们高效的处理文件、目录方面的事情。

语法格式如下:

os.walk(top[,topdown=True[,onerror=None[,followlinks=Flase]]])

top—是你所要遍历的目录的地址,返回的是一个三元组(root,dirs,files)

root所指的是当前正在遍历的这个文件夹的本身的地址

dirs是一个list,内容是该文件夹中所有目录的名字(不包括子目录)

files同样是一个list,内容是该文件夹中所有文件(不包括子目录)

topdown—可选,为True,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)。如果topdown参数为True,walk会遍历top文件夹,与top文件夹中每一个子目录。

onerror—可选,需要一个callable对象,当walk需要异常时,会调用。

followlinks—可选,如果为True,则会遍历目录下的快捷方式,如果为False,则优先遍历top的子目录。

最后,分享一个学习python的心得。我认识一个大牛,精通JS,RUBY,JAVA,PYTHON,我问他语言这么多,你怎么记得过来,语法还是一些用法技巧?

他说可以呀,第一,你熟练度不够;第二,你独立写程序的时间太少。他建议学编程最好用整块的时间学习,比如2—3个小时,集中学习,不然你上下文切换的开销太大。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 googpy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档