python文件归集,归集相同文件夹及子文件夹下的文件

目录下会有多个问价夹,每个文件夹下包含子文件夹,归集子文件夹名称相同里面的文件资料到另一个文件中



import os
import shutil
rootdir = '/test/'
newdir = '/test1/'
dic={} ##所有同名文件夹路径

for root,dirs,files in os.walk(rootdir):
    for dir in dirs:
        if dir in dic:
            dic[dir].append(os.path.join(root,dir))
        else:
            dic[dir]=[os.path.join(root,dir)]

for i in dic:
    for j in dic[i]:
        allfile=os.listdir(j)
        for f in allfile:
            if os.path.isdir(j+'/'+f):
                continue
            else:
                nd=newdir+i
                if not os.path.exists(nd):
                    os.makedirs(nd)
                shutil.copyfile(j+'/'+f,nd+'/'+f)

遍历你的文件夹,按后缀名一样的直接存起来。

1、新建一个输出文件夹子,建立归类子文件夹,例如归类D:,在D盘根目录创建一个“OUTFileResult ”,根据归集要求,用扩展名或者您自己的想法在OUTFileResult 下建立子文件夹(例如txt、exe之类,可以先建立,也可以在程序运行过程中判断是否存在这个目录,没有则调用IO建立)。
2、递归查询除了OUTFileResult 文件夹之外的所有文件和文件夹,为什么要在同一个盘建立输出文件夹,这里有个好处,就是文件可以用移动(Move),而非复制(copy),同一个分区文件移动会非常快。

用os.walk 来遍历文件夹和文件,另外可以用os.lisdir 返回指定的文件夹包含的文件或文件夹的名字的列表, 然后可以根据你的需要,使用shutil 库 来进行copy 或者move

os.listdir()获取目录,然后 move移动就可以了。
很容易的。

如果怕乱的话,直接os.walk遍历文件目录,然后做个excel表,在表格里处理好移动的目录,然后用move对应执行就行了。

一定要用到的2个包

import os
import shutil

bj_0163_bj 这人的代码改改就能行