寻找类似Java的Python文件遍历函数
在Java中,你可以使用File.listFiles()
这个方法来获取一个文件夹里的所有文件。这样你就可以很方便地遍历整个文件夹及其子文件夹。
那么在Python中,有没有类似的方法可以做到这一点呢?
9 个回答
试试在os模块里用“listdir()”这个函数(文档):
import os
print os.listdir('.')
作为一个长期使用Python的人,我得说,标准库里的路径和文件操作函数实在不怎么样:它们不是面向对象的,而且反映了一种过时的思维方式,就是把操作系统的函数简单包裹起来,完全不考虑其他。 我强烈推荐使用'path'模块,它是对os、os.path、glob和tempfile的一个封装(如果你想知道的话):用起来更舒服,而且更符合面向对象的编程风格:http://pypi.python.org/pypi/path.py/2.2
这是使用path模块的walk()函数:
dir = path(os.environ['HOME'])
for f in dir.walk():
if f.isfile() and f.endswith('~'):
f.remove()
是的,确实有办法。而且用Python的方法更好。
有三种选择:
1) 像 File.listFiles() 一样:
Python有一个叫os.listdir(path)的函数。它的功能和Java的方法差不多。
2) 使用glob进行路径模式扩展:
glob模块里有一些函数,可以用类似Unix命令行的方式列出文件,比如说
files = glob.glob('/usr/joe/*.gif')
3) 使用walk进行文件遍历:
Python的os.walk函数非常好用。
这个walk方法会返回一个生成器函数,它可以递归地列出从指定起始路径开始的所有目录和文件。
举个例子:
你甚至可以在运行时从“dirs”中移除某些目录,以避免进入那些目录:比如如果“joe”在dirs里,就用dirs.remove("joe")来避免进入名为“joe”的目录。
import os
from os.path import join
for root, dirs, files in os.walk('/usr'):
print "Current directory", root
print "Sub directories", dirs
print "Files", files