借鉴的 http://blog.csdn.net/pipisorry/article/details/46972171 但是他的代码有些问题。 在此更改后发出
扫描指定目录下的文件,或者匹配指定后缀和前缀的文件。
如果要扫描指定目录下的文件,包括子目录,调用scan_files("/export/home/test/")
如果要扫描指定目录下的特定后缀的文件(比如jar包),包括子目录,调用scan_files("/export/home/test/", postfix=".jar")
如果要扫描指定目录下的特定前缀的文件(比如test_xxx.py),包括子目录,调用scan_files("/export/home/test/", prefix="test_")
# -*- coding:utf8 -*- import os class ScanFile(object): def __init__(self, directory, prefix=None, postfix=None): self.directory = directory self.prefix = prefix self.postfix = postfix def scan_files(self): files_list = [] for dirpath, dirnames, filenames in os.walk(self.directory): ''''' dirpath is a string, the path to the directory. dirnames is a list of the names of the subdirectories in dirpath (excluding '.' and '..'). filenames is a list of the names of the non-directory files in dirpath. ''' for special_file in filenames: if self.postfix: if special_file.endswith(self.postfix): # 判断一个字符的结尾是否是某字符 Python 内置函数 endswith() files_list.append(os.path.join(dirpath, special_file)) elif self.prefix: if special_file.startswith(self.prefix): # 判断一个字符的开始是否是某字符 Python 内置函数 endswith() files_list.append(os.path.join(dirpath, special_file)) else: files_list.append(os.path.join(dirpath, special_file)) return files_list def scan_subdir(self): subdir_list = [] for dirpath, dirnames, files in os.walk(self.directory): subdir_list.append(dirpath) return subdir_list if __name__ == "__main__": dir = r"/home/djl/project/s" #需要扫描的文件路径 scan = ScanFile(dir, postfix=".py") subdirs = scan.scan_subdir() files = scan.scan_files() print u"扫描的子目录是:" for subdir in subdirs: print subdir print u"扫描的文件是:" for file in files: print file print '--------------------------' print files print '--------------------------'