拷贝目录内的所有文件及子目录到指定目录

今天,跟大家分享一下,Python 的文件复制操作,通过 shutil 模块来实现, 具体实现在代码中已经注释好,大家有需要的可以直接将代码 copy 走,修改文件路径,放入全局函数中就可以用了

代码如下:

#coding:utf-8
import os
import shutil

# 文件目录位置,使用前需要修改为自己的路径
# A = "Local_Script"
# B = "Local_back"
A = r"..\ExcelCopy"
B = r"..\ExcelCopy1"

#通过校验MD5 判断B内的文件与A 不同
def get_MD5(file_path):
    files_md5 = os.popen('md5 %s' % file_path).read().strip()
    file_md5 = files_md5.replace('MD5 (%s) = ' % file_path, '')
    return file_md5
	
def main(path, out):
    '''
    :param path:  文件输出源路径
    :param out:  文件复制目标路径
    :return:
    '''
    # 判断目标文件夹是否存在,如不存在,则创建。
    if not os.path.isdir(out):
        os.makedirs(out)
    # os.listdir(path) 获取源目录下的文件列表
    for files in os.listdir(path):
        name = os.path.join(path, files)
        print('name', name)
        back_name = os.path.join(out, files)
        print('back_name', back_name)
        # 如果源文件是文件
        if os.path.isfile(name):
            print('源文件是否存在',os.path.isfile(name))
            # 如果目标文件夹中文件存在
            if os.path.isfile(back_name):
                print('目标文件夹中文件存在', os.path.isfile(back_name))
                # 通过 MD5值来判断文件是否一致:一致,不做操作;不一致,覆盖。
                if get_MD5(name) != get_MD5(back_name):
                    print('MD5值', get_MD5(name))
                    shutil.copy(name,back_name)
            # 如果目标文件夹中文件不存在,复制
            else:
                print('目标文件夹中文件不存在',back_name)
                shutil.copy(name, back_name)
        # 如果源文件是一个目录
        else:
            # 如果目标目录不存在
            if not os.path.isdir(back_name):
                # 创建目标文件目录
                os.makedirs(back_name)
            # 递归执行
            main(name, back_name)

if __name__ == '__main__':
    main(A, B)

#拷贝目录A 的内容到目录B

ps: 设计器的拷贝文件为拷贝单个文件,不适用于批量拷贝。这里的代码适用于批量操作