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 相关文章推荐
使用Python的判断语句模拟三目运算
Apr 24 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
基于python的Paxos算法实现
Jul 03 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
Aug 12 Python
pymysql的简单封装代码实例
Jan 08 Python
python为QT程序添加图标的方法详解
Mar 09 Python
python小白学习包管理器pip安装
Jun 09 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
Python paramiko使用方法代码汇总
Nov 20 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操作mongoDB实例分析
2014/12/29 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
PHP微商城开源代码实例
2019/03/27 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
js查错流程归纳
2012/05/04 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
学习Vue组件实例
2018/04/28 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
python中__slots__用法实例
2015/06/04 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
python创建子类的方法分析
2019/11/28 Python
如何把python项目部署到linux服务器
2020/08/26 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
典型事迹材料范文
2014/12/29 职场文书
主持人大赛开场白
2015/05/29 职场文书
入党团支部推荐意见
2015/06/02 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python