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 04 Python
Python中的random()方法的使用介绍
May 15 Python
Python的pycurl包用法简介
Nov 13 Python
Python中类型检查的详细介绍
Feb 13 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
python实现电脑自动关机
Jun 20 Python
python实现决策树分类(2)
Aug 30 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
python中多个装饰器的调用顺序详解
Jul 16 Python
python程序需要编译吗
Jun 19 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
总结python多进程multiprocessing的相关知识
Jun 29 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编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
js 动态生成json对象、时时更新json对象的方法
2016/12/02 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
Python中处理unchecked未捕获异常实例
2015/01/17 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书