就找到一个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]
|