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实现2048小游戏
Mar 30 Python
深入解析Python中的线程同步方法
Jun 14 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
利用Python模拟登录pastebin.com的实现方法
Jul 12 Python
python读取大文件越来越慢的原因与解决
Aug 08 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
Python selenium自动化测试模型图解
Apr 15 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
python 检测nginx服务邮件报警的脚本
Dec 31 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
人大复印资料处理程序_输入篇
2006/10/09 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
深入浅析JavaScript中的constructor
2016/04/19 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
javascript回调函数详解
2018/02/06 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
VUE实现强制渲染,强制更新
2019/10/29 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[01:12:35]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
wxpython实现图书管理系统
2018/03/12 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
三万活动总结
2014/04/28 职场文书
审计班子对照检查材料
2014/08/27 职场文书
清明节寄语2015
2015/03/23 职场文书
网络舆情信息简报
2015/07/21 职场文书
红领巾广播站广播稿
2015/08/19 职场文书