Beispiel #1
0
def get_target_name_dir_path_list_under_dir(file_dir: str,
                                            name_list: list,
                                            display=False):
    """
    获得所有名字列表中的路径列表
    :param file_dir:
    :param name_list:
    :param display:
    :return:
    """
    assertor.path_exist_assert(file_dir)
    assertor.list_type_assert(name_list, str)

    if display:
        print('Begin get all target name dir under dir')
    file_dir = judge_add_os_sep(file_dir)
    path_set = set()
    count = 0
    for root, dirs, files in os.walk(file_dir, topdown=False):

        if len(dirs) != 0:
            for dir_name in dirs:
                if dir_name in name_list:
                    dir_path = join(root, dir_name)
                    path_set.add(dir_path)
                    count += 1
                    if display:
                        print(count)
                        print(dir_path)

    if display:
        print('Done get all target name dir under dir')
    return list(path_set)
Beispiel #2
0
def get_all_ending_files_under_dir(file_dir: str,
                                   ending_list: list,
                                   display=False):
    assertor.path_exist_assert(file_dir)
    assertor.list_type_assert(ending_list, str)

    if display:
        print('Begin get all ending files under dir')
    file_dir = judge_add_os_sep(file_dir)
    path_set = set()
    count = 0
    for root, dirs, files in os.walk(file_dir, topdown=False):

        if len(files) != 0:
            for file in files:
                ending = os.path.splitext(file)[-1]
                if ending in ending_list:
                    file_path = join(root, file)
                    path_set.add(file_path)
                    count += 1
                    if display:
                        print(count)
                        print(file_path)

    if display:
        print('Done get all ending files under dir')
    return list(path_set)
Beispiel #3
0
def un_compression_all_ending_files_under_dir(file_dir: str,
                                              ending_list: list):
    assertor.path_exist_assert(file_dir)
    assertor.list_type_assert(ending_list, str)

    file_dir = judge_add_os_sep(file_dir)
    file_list = get_all_ending_files_under_dir(file_dir, ending_list)

    print("Total %d files need uncompression\n" % len(file_list))

    for i in range(len(file_list)):
        print('%d/%d: %s un_compression' %
              (i + 1, len(file_list), file_list[i]))
        un_compression(file_list[i])
Beispiel #4
0
    def _get_match_num(cls, dir_path: str, rules: list) -> int:
        """
        得到匹配的数量
        :param dir_path: str,文件夹的路径
        :param rules: list,匹配的规则
        :return: match_num: int,匹配的数量
        """
        # 断言保证
        assertor.path_exist_assert(dir_path)
        assertor.list_type_assert(rules, str)

        match_num = 0
        for file in os.listdir(dir_path):
            for rule in rules:
                res = cls._check_label_exist(rule, file)
                match_num += res
        return match_num
Beispiel #5
0
def get_all_include_name_files_list_under_dir(file_dir: str,
                                              name_list: list,
                                              ignore_capital=True,
                                              display=False):
    """
    获得所有名字列表中的路径列表
    :param file_dir:
    :param name_list:
    :param display:
    :return:
    """
    assertor.path_exist_assert(file_dir)
    assertor.list_type_assert(name_list, str)

    if display:
        print('Begin get all include name files under dir')
    file_dir = judge_add_os_sep(file_dir)
    path_set = set()
    count = 0
    # 遍历所有的数据
    for root, dirs, files in os.walk(file_dir, topdown=False):
        # 如果文件列表不是空
        if len(files) != 0:
            # 遍历所有文件名
            for file_name in files:
                # 遍历所有包含名的部分
                for include_name in name_list:
                    #  是否忽略大小写
                    if ignore_capital:
                        temp_include_name = include_name.lower()
                        temp_file_name = file_name.lower()
                    else:
                        temp_include_name = include_name
                        temp_file_name = file_name
                    # 如果include name在文件名中
                    if temp_include_name in temp_file_name:
                        file_path = join(root, file_name)
                        path_set.add(file_path)
                        count += 1
                        if display:
                            print(count)
                            print(file_path)

    if display:
        print('Done get all include name files under dir')
    return list(path_set)
Beispiel #6
0
    def check_labels_exists(cls,
                            dir_path: str,
                            rules: list,
                            label_dirname='1') -> None:
        """
        检查labels是否存在且是否齐全
        :param dir_path: str,文件夹的路径
        :param rules: list,匹配的规则
        :param label_dirname: str,label文件夹的名字
        :return: None
        """
        # 断言保证
        assertor.path_exist_assert(dir_path)
        assertor.list_type_assert(rules, str)
        assertor.type_assert(label_dirname, str)

        dir_end = dir_path.split(os.sep)[-1]
        for (root, dirs, files) in os.walk(dir_path):
            if label_dirname in dirs:
                path_list = root.split(os.sep)
                for i in range(len(path_list)):
                    if dir_end == path_list[i]:
                        print('Dir %s' % path_list[i + 1])
                        break
                sub_path = os.path.join(root, label_dirname)
                print(os.path.join(root, sub_path).split('/')[-2])
                match_num = cls._get_match_num(sub_path, rules)
                if match_num != len(rules):
                    print(
                        '---------------------------------------------------------------------'
                    )
                    print(
                        '---------------------------------------------------------------------'
                    )
                    print('Warning: dir %s Not have all of the mask' %
                          str(dir_path))
                    print(
                        '---------------------------------------------------------------------'
                    )
                    print(
                        '---------------------------------------------------------------------'
                    )
Beispiel #7
0
def del_all_ending_files_under_dir(file_dir: str,
                                   ending_list: str,
                                   display=False):
    assertor.path_exist_assert(file_dir)
    assertor.list_type_assert(ending_list, str)

    file_dir = judge_add_os_sep(file_dir)
    if display:
        print("Begin to get all ending files")
    file_list = get_all_ending_files_under_dir(file_dir, ending_list, display)
    if display:
        print("Done get all ending files")

    if display:
        print("Total %d files need del\n" % len(file_list))

    for i in range(len(file_list)):
        if display:
            print('%d/%d: %s deleting' % (i + 1, len(file_list), file_list[i]))
        del_file('', file_list[i])