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爬虫获取淘宝天猫商品详细参数
Jun 23 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
Python设计模式之原型模式实例详解
Jan 18 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
numpy中生成随机数的几种常用函数(小结)
Aug 18 Python
django中cookiecutter的使用教程
Dec 03 Python
pandas apply使用多列计算生成新的列实现示例
Feb 24 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
python文件与路径操作神器 pathlib
Apr 01 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下获取http状态的实现代码
2014/05/09 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
[原创]用javascript实现检测指定目录是否存在的方法
2008/01/12 Javascript
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
python 伯努利分布详解
2020/02/25 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
应届生污水处理求职信
2013/11/06 职场文书
学校课外活动总结
2014/05/08 职场文书
文明城市标语
2014/06/16 职场文书
物业管理专业自荐信
2014/07/01 职场文书
环境建议书
2015/02/04 职场文书
培训班通知
2015/04/25 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Python WSGI 规范简介
2021/04/11 Python
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技