全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python利用递归和walk()遍历目录文件的方法示例

前言

经常需要检查一个“目录或文件夹”内部有没有我们想要的文件或者文件夹,就需要我们循环迭代出所有文件和子文件夹,Python中遍历指定目录下所有的文件和文件夹,包含多级目录,有两种方法,一种是通过递归思想去遍历,另一种是os模块的walk()函数下面话不多说,就来一起看看详细的介绍:

列出目录结构

一.递归方法

 #coding:utf-8
 import os
 allfile=[]
 def getallfile(path):
  allfilelist=os.listdir(path)
  for file in allfilelist:
   filepath=os.path.join(path,file)
   #判断是不是文件夹
   if os.path.isdir(filepath):
    getallfile(filepath)
   allfile.append(filepath)
  return allfile

 if __name__ == '__main__':

  path="C:\Users\zs\PycharmProjects\demo"
  allfiles=getallfile(path)

  for item in allfiles:
   print item


#结果
C:\Users\zs\PycharmProjects\demo\.idea\demo.iml
C:\Users\zs\PycharmProjects\demo\.idea\encodings.xml
C:\Users\zs\PycharmProjects\demo\.idea\misc.xml
C:\Users\zs\PycharmProjects\demo\.idea\modules.xml
C:\Users\zs\PycharmProjects\demo\.idea\workspace.xml
C:\Users\zs\PycharmProjects\demo\.idea
C:\Users\zs\PycharmProjects\demo\functiondemo.py
C:\Users\zs\PycharmProjects\demo\index.py
C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES\django.po
C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES
C:\Users\zs\PycharmProjects\demo\locale\en_US
C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.mo
C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.po
C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES
C:\Users\zs\PycharmProjects\demo\locale\zh_CN
C:\Users\zs\PycharmProjects\demo\locale
C:\Users\zs\PycharmProjects\demo\name.txt
C:\Users\zs\PycharmProjects\demo\text.txt

借用递归的思想去列出所有文件夹中的内容,判断如果是目录就继续调用本身的方法。

二.os模块的walk()函数

os.walk(top, topdown=True, onerror=None, followlinks=False)

返回一个3个元素的元祖,(dirpath, dirnames, filenames),

  • dirpath:要列出指定目录的路径
  • dirnames:目录下的所有文件夹
  • filenames:目录下的所有文件

参数一:top – 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。

参数二:topdown –可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。

参数三:onerror – 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。

参数四:followlinks – 设置为 true,则通过软链接访问目录。

#coding:utf-8
import os

def getallfiles(path):
 allfile=[]
 for dirpath,dirnames,filenames in os.walk(path):
  for dir in dirnames:
   allfile.append(os.path.join(dirpath,dir))
  for name in filenames:
   allfile.append(os.path.join(dirpath, name))
 return allfile
if __name__ == '__main__':
 path = "C:\Users\zs\PycharmProjects\demo"
 allfile=getallfiles(path)
 for file in allfile:
  print file




#输出结果

C:\Users\zs\PycharmProjects\demo\.idea
C:\Users\zs\PycharmProjects\demo\locale
C:\Users\zs\PycharmProjects\demo\functiondemo.py
C:\Users\zs\PycharmProjects\demo\index.py
C:\Users\zs\PycharmProjects\demo\name.txt
C:\Users\zs\PycharmProjects\demo\text.txt
C:\Users\zs\PycharmProjects\demo\.idea\demo.iml
C:\Users\zs\PycharmProjects\demo\.idea\encodings.xml
C:\Users\zs\PycharmProjects\demo\.idea\misc.xml
C:\Users\zs\PycharmProjects\demo\.idea\modules.xml
C:\Users\zs\PycharmProjects\demo\.idea\workspace.xml
C:\Users\zs\PycharmProjects\demo\locale\en_US
C:\Users\zs\PycharmProjects\demo\locale\zh_CN
C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES
C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES\django.po
C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES
C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.mo
C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.po

小结

两种方法输入结果是一样的。但是在输入的顺序有差异。对比感觉python的os模块的walk()方法比较简单

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# python  # 递归遍历目录  # os.walk  # 遍历  # 递归遍历文件  # Python遍历某目录下的所有文件夹与文件路径  # Python遍历目录并批量更换文件名和目录名的方法  # Python遍历目录中的所有文件的方法  # python遍历文件目录、批量处理同类文件  # python遍历文件夹  # 指定遍历深度与忽略目录的方法  # Python3遍历目录树实现方法  # python文件操作之目录遍历实例分析  # 在Python中关于使用os模块遍历目录的实现方法  # python 遍历磁盘目录的三种方法  # 浅析Python3中遍历目录的三种方法  # python遍历目录下所有文件的五种实现方法  # 递归  # 元祖  # 可选  # 目录下  # 将比  # 是一个  # 自下而上  # 两种  # 自上而下  # 这篇文章  # 就来  # 有两种  # 谢谢大家  # 多说  # 设置为  # 抛出  # 它自己  # 迭代  # 但是在 


相关文章: 如何在云主机快速搭建网站站点?  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何规划企业建站流程的关键步骤?  C++如何编写函数模板?(泛型编程入门)  如何彻底删除建站之星生成的Banner?  如何用好域名打造高点击率的自主建站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何用已有域名快速搭建网站?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  南京网站制作费用,南京远驱官方网站?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  建站主机选购指南:核心配置与性价比推荐解析  如何在Golang中使用replace替换模块_指定本地或远程路径  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  C++如何使用std::optional?(处理可选值)  建站主机选购指南与交易推荐:核心配置解析  广东企业建站网站优化与SEO营销核心策略指南  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  建站之星免费模板:自助建站系统与智能响应式一键生成  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  Swift开发中switch语句值绑定模式  如何快速生成ASP一键建站模板并优化安全性?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  建站之星2.7模板:企业网站建设与h5定制设计专题  建站主机默认首页配置指南:核心功能与访问路径优化  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  建站之星好吗?新手能否轻松上手建站?  如何通过VPS建站无需域名直接访问?  b2c电商网站制作流程,b2c水平综合的电商平台?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析  如何确保西部建站助手FTP传输的安全性?  如何在Tomcat中配置并部署网站项目?  教学网站制作软件,学习*后期制作的网站有哪些?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  建站168自助建站系统:快速模板定制与SEO优化指南  建站主机助手选型指南:2025年热门推荐与高效部署技巧  建站之星在线版空间:自助建站+智能模板一键生成方案  如何破解联通资金短缺导致的基站建设难题?  个人摄影网站制作流程,摄影爱好者都去什么网站?  建站之星ASP如何实现CMS高效搭建与安全管理?  建站DNS解析失败?如何正确配置域名服务器?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  如何在阿里云域名上完成建站全流程?  大型企业网站制作流程,做网站需要注册公司吗?  如何在腾讯云服务器上快速搭建个人网站?  建站主机解析:虚拟主机配置与服务器选择指南  ,购物网站怎么盈利呢?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  北京专业网站制作设计师招聘,北京白云观官方网站?  济南网站制作的价格,历城一职专官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。