Python 获取指定文件夹下的目录和文件的实现


Posted in Python onAugust 30, 2019

经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结。Python 中扫描目录有两种方法:os.listdir 和 os.walk。

一、os.listdir 方法

os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归。 它也不包括 '.' 和 '..' 即使它在目录中。

语法格式如下:

os.listdir(path)

实例代码

def list_dir(file_dir):
  '''
    通过 listdir 得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归
  '''
  print'\n\n<><><><><><> listdir <><><><><><>'
  print "current dir : {0}".format(file_dir)
  dir_list = os.listdir(file_dir)
  for cur_file in dir_list:
    # 获取文件的绝对路径
    path = os.path.join(file_dir, cur_file)
    if os.path.isfile(path): # 判断是否是文件还是目录需要用绝对路径
      print "{0} : is file!".format(cur_file)
    if os.path.isdir(path):
      print "{0} : is dir!".format(cur_file)
      list_dir(path) # 递归子目录

二、os.walk 方法

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

语法格式如下:

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

方法参数说明:

  • top:要遍历的目录的路径
  • topdown:可选,如果为 True,则优先遍历 top 目录,以及 top 目录下的每一个子目录,否则优先遍历 top 的子目录,默认为 True
  • onerror: 可选, 需要一个 callable 对象,当 walk 异常时调用
  • followlinks:可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录,默认为 False
  • args:包含那些没有 '-' 或 '--' 的参数列表

返回值: 三元组 (root, dirs, files)

  • root :所指的是当前正在遍历的目录的地址
  • dirs :当前文件夹中所有目录名字的 list (不包括子目录)
  • files :当前文件夹中所有的文件 (不包括子目录中的文件)

实例

def work_dir(file_dir):
  print'\n\n<><><><><> work dir <><><><><>'
  for root, dirs, files in os.walk(file_dir):
    print'\n========================================'
    print "root : {0}".format(root)
    print "dirs : {0}".format(dirs)
    print "files : {0}".format(files)
​
    for file in files:
      try:
        print'-----------------------------------'
        
        file_name = os.path.splitext(file)[0]
        file_suffix = os.path.splitext(file)[1]
        file_path = os.path.join(root, file)
        file_abs_path = os.path.abspath(file)
        file_parent = os.path.dirname(file_path)
​
        print "file : {0}".format(file)
        print "file_name : {0}".format(file_name)
        print "file_suffix : {0}".format(file_suffix)
        print "file_path : {0}".format(file_path)
        print "file_abs_path : {0}".format(file_abs_path)
        print "file_parent : {0}".format(file_parent)
        
      except Exception, e:
        print "Exception", e

三、其他跟文件相关的常用方法

os.path.splitext():分离文件名和扩展名

file = "file_test.txt"
file_name = os.path.splitext(file)[0] # 输出:file_test
file_suffix = os.path.splitext(file)[1] # 输出:.txt

os.path.exists():判断文件或目录是否存在

os.path.isfile():判断是否是文件

os.path.isdir():判断是否是目录

os.path.dirname():获取当前文件所在的目录,即父目录

os.makedirs():创建多级目录

os.mkdir():创建单级目录

os.path.getsize():获取文件大小

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
JS设计模式之责任链模式实例详解
Feb 03 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
Python socket实现的简单通信功能示例
Aug 21 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Python利用matplotlib绘制约数个数统计图示例
Nov 26 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
python代码如何注释
Jun 01 Python
python把一个字符串切开的实例方法
Sep 27 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
简单的Python调度器Schedule详解
Aug 30 #Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 #Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 #Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 #Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 #Python
快速解决docker-py api版本不兼容的问题
Aug 30 #Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 #Python
You might like
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
JSON取值前判断
2014/12/23 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
选择Python写网络爬虫的优势和理由
2019/07/07 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
没编程基础可以学python吗
2020/06/17 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
12月红领巾广播稿
2014/02/13 职场文书
二年级学生评语大全
2014/04/23 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
公司总经理任命书
2014/06/05 职场文书
小学教师培训方案
2014/06/09 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
党员剖析材料范文
2014/09/30 职场文书
市级三好学生评语
2014/12/29 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
廉政党课工作报告案例
2019/06/21 职场文书
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis