利用Python查看目录中的文件示例详解


Posted in Python onAugust 28, 2017

前言

我们在日常开发中,经常会遇到一些关于文件的操作,例如,实现查看目录内容的功能。类似Linux下的tree命令。统计目录下指定后缀文件的行数。

功能是将目录下所有的文件路径存入list中。可以加入后缀判断功能,搜索指定的后缀名文件。主要利用递归的方法来检索文件。

仿造 tree 功能示例代码

Python2.7

列出目录下所有文件

递归法

import os
def tree_dir(path, c_path='', is_root=True):
 """
 Get file list under path. Like 'tree'
 :param path Root dir
 :param c_path Child dir
 :param is_root Current is root dir
 """
 res = []
 if not os.path.exists(path):
 return res
 for f in os.listdir(path):
 if os.path.isfile(os.path.join(path, f)):
  if is_root:
  res.append(f)
  else:
  res.append(os.path.join(c_path, f))
 else:
  res.extend(tree_dir(os.path.join(path, f), f, is_root=False))
 return res

下面是加入后缀判断的方法。在找到文件后,判断一下是否符合后缀要求。不符合要求的文件就跳过。

def tree_dir_sur(path, c_path='', is_root=True, suffix=''):
 """ Get file list under path. Like 'tree'
 :param path Root dir
 :param c_path Child dir
 :param is_root Current is root dir
 :param suffix Suffix of file
 """
 res = []
 if not os.path.exists(path) or not os.path.isdir(path):
 return res
 for f in os.listdir(path):
 if os.path.isfile(os.path.join(path, f)) and str(f).endswith(suffix):
  if is_root:
  res.append(f)
  else:
  res.append(os.path.join(c_path, f))
 else:
  res.extend(tree_dir_sur(os.path.join(path, f), f, is_root=False, suffix=suffix))
 return res
if __name__ == "__main__":
 for p in tree_dir_sur(os.path.join('E:\ws', 'rnote', 'Python_note'), suffix='md'):
 print p

统计目录下指定后缀文件的行数

仅适用os中的方法,仅检索目录中固定位置的文件

# -*- coding: utf-8 -*-
import os
def count_by_categories(path):
 """ Find all target files and count the lines """
 if not os.path.exists(path):
 return
 c_l_dict = dict() # e.g. {category: lines}
 category_list = [cate for cate in os.listdir(path) if
   os.path.isdir(os.path.join(path, cate)) and not cate.startswith('.')]
 for category_dir in category_list:
 line_count = _sum_total_line(os.path.join(path, category_dir), '.md')
 if line_count > 0:
  c_l_dict[category_dir] = line_count
 return c_l_dict
def _sum_total_line(path, endswith='.md'):
 """ Get the total lines of target files """
 if not os.path.exists(path) or not os.path.isdir(path):
 return 0
 total_lines = 0
 for f in os.listdir(path):
 if f.endswith(endswith):
  with open(os.path.join(path, f)) as cur_f:
  total_lines += len(cur_f.readlines())
 return total_lines
if __name__ == '__main__':
 note_dir = 'E:/ws/rnote'
 ca_l_dict = count_by_categories(note_dir)
 all_lines = 0
 for k in ca_l_dict.keys():
 all_lines += ca_l_dict[k]
 print 'all lines:', str(all_lines)
 print ca_l_dict

以笔记文件夹为例,分别统计分类目录下文件的总行数,测试输出

all lines: 25433
{'flash_compile_git_note': 334, 'Linux_note': 387, 'Algorithm_note': 3637, 'Comprehensive': 216, 'advice': 137, 'Java_note': 3013, 'Android_note': 11552, 'DesignPattern': 2646, 'Python_note': 787, 'kotlin': 184, 'cpp_note': 279, 'PyQt_note': 439, 'reading': 686, 'backend': 1136}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python计算一个文件里字数的方法
Jun 15 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
利用Python爬取可用的代理IP
Aug 18 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
python素数筛选法浅析
Mar 19 Python
nohup后台启动Python脚本,log不刷新的解决方法
Jan 14 Python
python获取array中指定元素的示例
Nov 26 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
python能做哪方面的工作
Jun 15 Python
QT5 Designer 打不开的问题及解决方法
Aug 20 Python
Python根据字符串调用函数过程解析
Nov 05 Python
Python如何通过subprocess调用adb命令详解
Aug 27 #Python
Python中序列的修改、散列与切片详解
Aug 27 #Python
Python正确重载运算符的方法示例详解
Aug 27 #Python
深入学习Python中的上下文管理器与else块
Aug 27 #Python
python利用MethodType绑定方法到类示例代码
Aug 27 #Python
Python中使用haystack实现django全文检索搜索引擎功能
Aug 26 #Python
python读取excel表格生成erlang数据
Aug 26 #Python
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
php生成WAP页面
2006/10/09 PHP
常用的php ADODB使用方法集锦
2008/03/25 PHP
php google或baidu分页代码
2009/11/26 PHP
php实现监听事件
2013/11/06 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
Python md5与sha1加密算法用法分析
2017/07/14 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
windows支持哪个版本的python
2020/07/03 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
新任教师自我鉴定
2014/02/24 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
爱国主题班会教案
2015/08/14 职场文书
大学学习委员竞选稿
2015/11/20 职场文书