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 相关文章推荐
Python3实现连接SQLite数据库的方法
Aug 23 Python
Python连接PostgreSQL数据库的方法
Nov 28 Python
Python实现将数据库一键导出为Excel表格的实例
Dec 30 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
python图片二值化提高识别率代码实例
Aug 24 Python
python使用matplotlib绘制雷达图
Oct 18 Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
call在Python中改进数列的实例讲解
Dec 09 Python
pycharm 快速解决python代码冲突的问题
Jan 15 Python
Python如何识别银行卡卡号?
Jun 10 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调用新浪短链接API的方法
2014/11/08 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
js实现网页收藏功能
2015/12/17 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
python写入已存在的excel数据实例
2018/05/03 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
python代码区分大小写吗
2020/06/17 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
打架检讨书100字
2014/01/19 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫