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实现每次处理一个字符的三种方法
Oct 09 Python
python任务调度实例分析
May 19 Python
Python之str操作方法(详解)
Jun 19 Python
Python实现图片转字符画的示例
Aug 22 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
使用python获取csv文本的某行或某列数据的实例
Apr 03 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
python3 pathlib库Path类方法总结
Dec 26 Python
python新式类和经典类的区别实例分析
Mar 23 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 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 获取目录下的图片并随机显示的代码
2009/12/28 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
超级兔子让浮动层消失的前因后果
2007/03/09 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
深入理解ES6中let和闭包
2018/02/22 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
python基础之入门必看操作
2017/07/26 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
优秀毕业生推荐信
2013/11/02 职场文书
买房协议书范本
2014/10/23 职场文书
自查自纠整改报告
2014/11/06 职场文书
单独二胎证明
2015/06/24 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS