`
alanland
  • 浏览: 642552 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Python 用 os.walk 遍历目录

阅读更多

今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发现了os.walk方法,就忍不住和大家分享下.


先看下代码:



import os

for i in os.walk('c:'+os.sep+'ant'):
    print i[1]



下面是输出:

c:\ant
c:\ant\bin
c:\ant\docs
c:\ant\docs\ant2
c:\ant\docs\antlibs
c:\ant\docs\antlibs\antunit
c:\ant\docs\antlibs\compress
c:\ant\docs\antlibs\dotnet
c:\ant\docs\antlibs\props
c:\ant\docs\antlibs\svn
c:\ant\docs\images
c:\ant\docs\manual
c:\ant\docs\manual\api
c:\ant\docs\manual\api\org
c:\ant\docs\manual\api\org\apache
c:\ant\docs\manual\api\org\apache\tools
c:\ant\docs\manual\api\org\apache\tools\ant
c:\ant\docs\manual\api\org\apache\tools\ant\dispatch
c:\ant\docs\manual\api\org\apache\tools\ant\filters


后面还有很长.

如果不使用这个方法,遍历同样能达到效果.不过使用 os.walk 方便很多了.这个方法返回的是一个三元tupple(dirpath, dirnames, filenames),

其中第一个为起始路径,

第二个为起始路径下的文件夹,

第三个是起始路径下的文件.
dirpath是一个string,代表目录的路径,

dirnames是一个list,包含了dirpath下所有子目录的名字,

filenames是一个list,包含了非目录文件的名字.这些名字不包含路径信息,如果需要得到全路径,需要使用 os.path.join(dirpath, name).



下面是可以看到 os.walk 方法返回的内容.


代码:


import os

for i in os.walk('c:'+os.sep+'ant'):
    print i
   

输出:

('c:\\ant', ['bin', 'docs', 'etc', 'lib', 'Project'], ['fetch.xml', 'get-m2.xml', 'INSTALL', 'KEYS', 'LICENSE', 'NOTICE', 'README', 'WHATSNEW'])
('c:\\ant\\bin', [], ['ant', 'ant.bat', 'ant.cmd', 'antenv.cmd', 'antRun', 'antRun.bat', 'antRun.pl', 'complete-ant-cmd.pl', 'envset.cmd', 'lcp.bat', 'runant.pl', 'runant.py', 'runrc.cmd'])
('c:\\ant\\docs', ['ant2', 'antlibs', 'images', 'manual', 'projects', 'slides', 'webtest'], ['antnews.html', 'ant_in_anger.html', 'ant_task_guidelines.html', 'appendix_e.pdf', 'breadcrumbs.js', 'bugs.html', 'bylaws.html', 'contributors.html', 'external.html', 'faq.html', 'favicon.ico', 'index.html', 'legal.html', 'LICENSE', 'license.html', 'mail.html', 'mission.html', 'nightlies.html', 'page.css', 'problems.html', 'projects.html', 'resources.html', 'svn.html'])
('c:\\ant\\docs\\ant2', [], ['actionlist.html', 'features.html', 'FunctionalRequirements.html', 'original-specification.html', 'requested-features.html', 'requested-features.txt', 'VFS.txt'])
('c:\\ant\\docs\\antlibs', ['antunit', 'compress', 'dotnet', 'props', 'svn'], ['bindownload.cgi', 'bindownload.html', 'charter.html', 'index.html', 'proper.html', 'sandbox.html', 'srcdownload.cgi', 'srcdownload.html'])
('c:\\ant\\docs\\antlibs\\antunit', [], ['index.html'])
('c:\\ant\\docs\\antlibs\\compress', [], ['index.html'])
('c:\\ant\\docs\\antlibs\\dotnet', [], ['index.html'])
('c:\\ant\\docs\\antlibs\\props', [], ['index.html'])

...


当然后面还有很长了.


有了这个函数无论是遍历文件夹,还是遍历文件都很方便.



下面是我是自己用递归实现的遍历文件方法.

代码:

def listdir(leval,path):
    for i in os.listdir(path):
        print('|  '*(leval + 1) + i)
        if os.path.isdir(path+i):
            listdir(leval+1, path+i)

path = 'c:'+os.sep+'ant'

#或者直接 path='C:/ant'
print(path+os.sep)
listdir(0, path+os.sep)


下面是输出:

c:\ant\
|  bin
|  |  ant
|  |  ant.bat
|  |  ant.cmd
|  |  antenv.cmd
|  |  antRun
|  |  antRun.bat
|  |  antRun.pl
|  |  complete-ant-cmd.pl
|  |  envset.cmd
|  |  lcp.bat
|  |  runant.pl
|  |  runant.py
|  |  runrc.cmd
|  docs
|  |  ant2
|  |  antlibs
|  |  antnews.html
|  |  ant_in_anger.html
|  |  ant_task_guidelines.html
|  |  appendix_e.pdf
|  |  breadcrumbs.js
|  |  bugs.html
|  |  bylaws.html
|  |  contributors.html
|  |  external.html
|  |  faq.html
|  |  favicon.ico
|  |  images
|  |  index.html
|  |  legal.html
|  |  LICENSE
|  |  license.html
|  |  mail.html
|  |  manual
|  |  mission.html
|  |  nightlies.html
|  |  page.css
|  |  problems.html
|  |  projects
|  |  projects.html
|  |  resources.html
|  |  slides
|  |  svn.html
|  |  webtest
|  etc
|  |  ant-bootstrap.jar
|  |  changelog.xsl
|  |  checkstyle
|  |  coverage-frames.xsl
|  |  jdepend-frames.xsl
|  |  jdepend.xsl
|  |  junit-frames-xalan1.xsl
|  |  junit-frames.xsl
|  |  junit-noframes.xsl
|  |  log.xsl
|  |  maudit-frames.xsl
|  |  mmetrics-frames.xsl
|  |  tagdiff.xsl
|  fetch.xml
|  get-m2.xml
|  INSTALL
|  KEYS
|  lib
|  |  ant-1.8.0.pom
|  |  ant-1.8.0.pom.md5
|  |  ant-1.8.0.pom.sha1
|  |  ant-1.8.0.pom.sha512

..


如果只想得到文件夹,而不要文件,把要做的事情放到

if os.path.isdir(path+i):

里面就好了,比如: print()


O(∩_∩)O~



3
1
分享到:
评论
2 楼 zlele 2016-10-24  
你好,这个遍历文件的结果是乱序的吗
1 楼 daqing15 2011-10-24  

相关推荐

    python os.walk 遍历所有文件 文件夹(csdn)————程序.pdf

    `os.walk()`函数是其中的一个重要方法,它用于遍历一个目录树,即递归地遍历目录及其所有子目录,并返回当前目录、子目录列表以及普通文件列表。在给定的标题和描述中,我们可以看到这个功能被用于遍历"test"目录下...

    遍历[目录和文件](功能与python的os.walk一样)_walk函数_

    Python的`os`模块提供了`os.walk()`函数,它能够方便地遍历一个目录树,递归地访问所有子目录及其包含的文件。这个功能在C++中也可以实现,尽管没有内置的直接等效函数。本文将探讨如何在C++中实现类似`os.walk()`的...

    python使用os模块的os.walk遍历文件夹示例

    if __name__ == ‘__main__’: try: ”’traval and list all files and all dirs”’ for root, dirs, files in os.walk(‘D:’ + os.sep + ‘Python27’): print ‘——————-directory < ‘ + root + ...

    python使用os.listdir和os.walk获得文件的路径的方法

    # 使用 os.walk 遍历目录树 for dirpath, dirnames, filenames in os.walk(path): for filename in filenames: print(os.path.join(dirpath, filename)) # 输出结果: # C:\Users\Administrator\Desktop\file\file...

    Python使用os.listdir和os.walk获取文件路径

    在这个示例中,我们使用 `os.walk` 遍历指定路径下的所有文件和目录。`os.walk` 返回一个三元组 `(dirpath, dirnames, filenames)`,其中: - `dirpath` 表示当前正在访问的目录路径; - `dirnames` 包含当前目录下...

    Python 递归遍历目录 生成excel

    使用`os.walk()`函数,我们可以实现递归遍历目录的功能。这个函数会返回一个生成器,每次迭代时返回一个三元组,包含当前目录路径、当前目录下的子目录列表和当前目录中的文件名列表。我们可以遍历这个生成器,对每...

    Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法

    在python3.6版本中去掉了os.path.walk()函数 os.walk() 函数声明:walk(top,topdown=True,oneerror=None) 1、参数top表示需要遍历的目录树的路径 2、参数农户topdown默认是”True”,表示首先返回根目录树下的文件...

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

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

    python 获取文件下所有文件或目录os.walk()的实例

    而os模块提供了大量与操作系统交互的功能,其中os.walk()是一个非常有用的工具,它可以遍历目录树,获取目录和文件的相关信息。在Python 3.6中,已经废弃了os.path.walk()函数,取而代之的是os.walk()函数。本文将...

    PYTHON常用模块.pdf

    - `os.path.walk(path, visit, arg)` 遍历目录结构并调用指定函数。 - `os.path.supports_unicode_filename` 表示系统是否支持Unicode文件名。 这些方法为Python程序员提供了对文件系统操作的强大支持,使得在...

    the introduction of python os.zip_OND3_python os模块简介_youthot3

    os模块的`os.walk()`函数为此提供了解决方案,它可以递归地遍历目录树,返回每个目录下的所有子目录和文件名。这对于文件搜索、备份或清理任务非常有用。 os模块还提供了进程和环境变量的相关操作。`os.system()`...

    Python中os模块功能与用法详解

    本文实例讲述了Python中os模块功能与用法。分享给大家供大家参考,具体如下: OS模块 ...遍历目录 os.path.join 连接目录与文件名 os.path.split 分割文件名与目录 os.path.abspath 获取绝对路径

    对python中的 os.mkdir和os.mkdirs详解

    在处理文件系统时,有时候需要遍历目录中的所有文件和子目录。os.walk(path)函数能够做到这一点,返回一个迭代器,它会遍历path下的每一个目录,并返回一个三元组,包含当前目录的路径、它包含的子目录列表和文件...

    Python递归遍历目录下所有文件

    方式一: #!/usr/bin/python # -*- coding: utf-8 -*- import os def gci(filepath): #遍历filepath下所有文件,包括子目录 ...for fpathe,dirs,fs in os.walk('/root'): for f in fs: print(os.path.join(fpathe,f))

    遍历目录,修改文件名称

    迭代方法则使用`os.walk()`函数,它可以生成目录树中的三元组(目录路径、该目录下的子目录列表和文件列表),这样可以逐个处理每个文件。 3. **获取文件属性**:在Python中,`os.path`模块提供了一系列函数用于...

    遍历目录.rar

    在Python中,可以使用`os`模块的`os.walk()`函数来遍历目录。它会返回一个生成器,每次迭代都会提供当前目录的路径、子目录列表和当前目录下非目录子文件列表。 ```python import os for root, dirs, files in...

    网站文件夹目录遍历

    例如,`os.listdir()`用于获取指定路径下的所有文件和目录名,`os.path.join()`用于构建完整的文件或目录路径,`os.walk()`则可以递归地遍历目录树。 3. **requests模块** `requests`是Python的一个第三方库,用于...

    python os操作整理

    30. `os.path.walk(path, visit, arg)`: 遍历指定路径下的所有子目录和文件。visit 是一个回调函数,每次遍历到一个目录或文件时都会被调用,参数包括当前目录(arg, dirname, names)。这个函数在需要对目录树进行...

Global site tag (gtag.js) - Google Analytics