python os.walk()遍历文件夹
转自 http://alanland.iteye.com/blog/612459
via @alanland
今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发现了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~
python os.walk()遍历文件夹的更多相关文章
- python os.walk()遍历
os.walk()遍历 import os p='/bin' #设定一个路径 for i in os.walk(p): #返回一个元组 print (i) # i[0]是路径 i[1]是文件夹 i[2 ...
- Python os.walk() 遍历出当前目录下的文件夹和文件
os.walk目录遍历 os.walk的参数如下: os.walk(top, topdown=True, onerror=None, followlinks=False) 其中: - top是要遍历的 ...
- Python OS导入一个文件夹所有文件
import os path = 'F:/save_file/seminarseries/' for root, dirs, files in os.walk(path): print(root) 这 ...
- Python os.walk文件遍历用法【转】
python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使用os.walk,首先要载入该函数 可以使用以下两种方法 import os ...
- Python os.walk文件遍历
os.walk(top, topdown=True, onerror=None, followlinks=False) 可以得到一个三元tupple(dirpath, dirnames, filena ...
- python笔记4-遍历文件夹目录os.walk()
前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk()方 ...
- python 遍历文件夹 文件
python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...
- python遍历文件夹下的文件
在读文件的时候往往需要遍历文件夹,python的os.path包含了很多文件.文件夹操作的方法.下面列出: os.path.abspath(path) #返回绝对路径 os.path.basename ...
- Python 用 os.walk 遍历目录
今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发现了os.walk方法,就忍不住和大家分享下. 先看下代码: import os for i in os.wa ...
随机推荐
- 关于matplotlib绘制直方图偏移的问题
在使用pyplot绘制直方图的时候我发现了一个问题,在给函数.hist()传参的时候,如果传入的组数不是刚刚好(就是说这个组数如果是使用(最大值-最小值)/组距计算出来,而这个数字不是整除得来而是取整 ...
- Java发送邮件 —— SpringBoot集成Java Mail
用途:此文仅供,自己今后的小程序通过邮件,批量通知用户. 简单记录了一些发送基本邮件的操作. 项目(SpringBoot版本为2.1.2.RELEASE): 核心依赖(其他相关依赖,在其使用的地方具体 ...
- swift 有道 翻译文档(1 定义变量常量,数组字典)
使用let来创建常量,使用var来创建变量.一个常量的值在编译时不需要知道,但是您必须为它指定一个值一次.这意味着您可以使用常量来命名一个您确定一次的值,但是在许多地方使用它.var myVariab ...
- OpenGL.教程
5.第五课:带纹理的立方体.html(http://www.opengl-tutorial.org/cn/beginners-tutorials/tutorial-5-a-textured-cube/ ...
- 网站性能测试工具 webbench 的安装和使用
1.webbench的下载和安装 wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz sudo tar xvf we ...
- HDU 3466 Proud Merchants(背包问题,要好好理解)
Problem Description Recently, iSea went to an ancient country. For such a long time, it was the most ...
- MySQL 存储过程返回多个值
MySQL 存储过程返回多个值 在本教程中,您将学习如何编写/开发返回多个值的存储过程. MySQL存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程 ...
- IntelliJ IDEA 2017.3.1安装步骤
https://www.jetbrains.com/idea/download/#section=windows 下载旗舰版 1.下载完成后,运行安装: 2.next: 3.选择你要安装的目录,nex ...
- Uncaught RangeError: Maximum call stack size exceeded 超出最大调用值
“Uncaught RangeError: Maximum call stack size exceeded”.当运行js时出现这个报错,但你又查不到原因的时候,不要慌. 真相只有一个,那就是你的代码 ...
- 浙江省住房和城乡建设厅 http://www.zjjs.com.cn/ 漏洞提示
http://220.189.211.52/zjjsgbxx/FileAttach/96dcdf11-c45e-4455-a443-f6dea8a44e23.html 可以下载,浏览 改修,