python 按个数分类文件

# 功能描述:
# 1.扫描指定目录中的所有PDF文件
# 2.按个数分类

# coding:utf-8
import os
import shutil


# 功能描述:
# 1.扫描指定目录中的所有PDF文件
# 2.按个数分类


def scanDir(directory, prefix=None, postfix=None):
    '''
    扫描指定文件夹下的文件。或者匹配指定后缀和前缀的函数。
    假设要扫描指定文件夹下的文件,包含子文件夹,调用scan_files("/export/home/test/")
    假设要扫描指定文件夹下的特定后缀的文件(比方jar包),包含子文件夹,调用scan_files("/export/home/test/", postfix=".jar")
    假设要扫描指定文件夹下的特定前缀的文件(比方test_xxx.py)。包含子文件夹,调用scan_files("/export/home/test/", prefix="test_")
    :param directory: 指定需要扫描的目录
    :param prefix: 包含前缀
    :param postfix: 包含后缀
    :return: 文件列表
    '''
    files_list = []
    for root, sub_dirs, files in os.walk(directory):
        for special_file in files:
            if postfix:
                if special_file.endswith(postfix):
                    files_list.append(os.path.join(root, special_file))
            elif prefix:
                if special_file.startswith(prefix):
                    files_list.append(os.path.join(root, special_file))
            else:
                files_list.append(os.path.join(root, special_file))

    return files_list


def mkdir(path):
    '''
    建立目录
    :param path: 需要建立的目录
    :return: 成功返回 True 失败返回 False
    '''
    # 去除首位空格
    path = path.strip()

    # 去除尾部 \ 符号
    path = path.rstrip("\\")

    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists = os.path.exists(path)

    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)
        print(path + ' 创建成功')
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print(path + ' 目录已存在')
        return False


if __name__ == '__main__':
    # 指定一个绝对路径
    directory = 'D:\\pdf'
    # 指定每个目录下的文件数量
    fileMun = 20
    # 单目录文件个数计数器
    start = 0
    # 总文件个数计数器
    number=0
    # 移动目录
    moveToDirectory =directory + os.sep +  '[0-20]'
    mkdir(moveToDirectory)
    fileList = scanDir(directory, postfix=".pdf")
    # 开始移动文件
    for fileName in fileList:
        start += 1
        shutil.move(fileName,moveToDirectory)
        if start == fileMun:
            # 1.建目录 2.重置start变量
            start = 0
            # 后面的数
            number+=fileMun
            number_1 = number+ fileMun
            moveToDirectory =directory + os.sep +  '[{number}-{number_1}]'.format(number=number,number_1=number_1)
            mkdir(moveToDirectory)
        print(fileName)

  

 

 

posted @ 2018-08-10 12:05  python实战  阅读(521)  评论(0)    收藏  举报