import os def ListFilesToTxt(dir,file,wildcard,recursion): exts = wildcard.split(" ") files = os.listdir(dir) for name in files: fullname=os.path.join(dir,name) if(os.path.isdir(fullname) & recursion): ListFilesToTxt(fullname,file,wildcard,recursion) else: for ext in exts: if(name.endswith(ext)): (filename,extension) = os.path.splitext(name) file.write(filename + " " + "depth/" + name + "\n") break def Test(): dir="/home/david/workspace/bags/depth" outfile="/home/david/workspace/bags/depth.txt" wildcard = ".png .txt .exe .dll .lib" file = open(outfile,"w") if not file: print ("cannot open the file %s for writing" % outfile) ListFilesToTxt(dir,file,wildcard, 1) file.close() Test()
另外还可以利用:(使用os.walk) walk递归地对目录及子目录处理,每次返回的三项分别为:当前递归的目录,当前递归的目录下的所有子目录,当前递归的目录下的所有文件。
代码如下:
import os def ListFilesToTxt(dir,file,wildcard,recursion): exts = wildcard.split(" ") for root, subdirs, files in os.walk(dir): for name in files: for ext in exts: if(name.endswith(ext)): file.write(name + "\n") break if(not recursion): break def Test(): dir="J:\\1" outfile="binaries.txt" wildcard = ".txt .exe .dll .lib" file = open(outfile,"w") if not file: print ("cannot open the file %s for writing" % outfile) ListFilesToTxt(dir,file,wildcard, 0) file.close() Test()