首页 > 学技术 > 技术网文 > Python > 正文

[精彩] 请教:怎样列出指定目录下的所有文件,包括子目录下的文件,谢谢


来源 chinaunix.net 酷勤网整理

就找到一个listdir函数,但不能得到子目录下的文件。试着递归了一下,没搞定。

谢谢


filenamelist=[]

def listfile(path):
    name = ""
    temppath = path
    filelist = os.listdir(temppath)

    while(len(filelist)>;0):
        name = filelist.pop()
        subpath = temppath + "\\" +name
        sublist = os.listdir(subpath)
    
        if(len(sublist) <= 0):
            filenamelist.push(subpath)
        else:
            listfile(subpath)

listfile(filedir)



 wolfg 回复于:2005-07-08 15:50:59

walk( path, visit, arg) 
具体看文档吧


 jetrix 回复于:2005-07-08 16:52:28


find.py

import fnmatch, os

def find(pattern, startdir=os.curdir):
    matches = []
    os.path.walk(startdir, findvisitor, (matches, pattern))
    matches.sort()
    return matches

def findvisitor((matches, pattern), thisdir, nameshere):
    for name in nameshere:
        if fnmatch.fnmatch(name, pattern):
            fullpath = os.path.join(thisdir, name)
            matches.append(fullpath)

if __name__ == '__main__':
    import sys
    namepattern, startdir = sys.argv[1], sys.argv[2]
    for name in find(namepattern, startdir): print name


>;>;>; import find
>;>;>; list = find.find('*.py','/home/jetrix')
>;>;>; for fname in list:
.......      print fname



 seaofnothing 回复于:2005-07-11 16:12:56

谢谢二位

看了半天walk函数的帮助,已经OK了,今天闲着共享出来。

filedir = "d:\\xxx"

filenamelist=[]

def visit(arg, dirname, names, flist = filenamelist):
    flist += [dirname + "\\" + file for file in names]
        
os.path.walk(filedir, visit, 0)

walk函数对每一个文件夹调用visit函数,并传递dirname, names参数,names包括dirname下的所有的文件名列表(用listdir函数获得)。

我需要将结果保存到filenamelist中,filenamelist由一个默认参数传递给visit,不影响walk调用。

filenamelist中得到所有的文件名列表,我的需求不用判断是文件还是文件夹。


 safer 回复于:2005-07-23 02:24:49

SyntaxError: invalid syntax
>;>;>; filedir = "d:\\Safer Toll"
>;>;>; filenamelist=[]
>;>;>; def visit(arg, dirname, names, flist = filenamelist);
  File "<stdin>;", line 1
    def visit(arg, dirname, names, flist = filenamelist);
                                                        ^
SyntaxError: invalid syntax

怎么回事呢?


 wolfg 回复于:2005-07-23 13:49:24

引用:原帖由 "safer" 发表:
gt;>; def visit(arg, dirname, names, flist = filenamelist);
  File "<stdin>;", line 1
    def visit(arg, dirname, names, flist = filenamelist);
                                              ..........



;改成[color=#FF0000]:[/color]




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=574467
转载请注明作者名及原文出处



收藏本页到: