借鉴的   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 '--------------------------'

Python 读取指定目录下的所有子目录及所有文件





相关文章: