Python如何将一个文件夹(包括子文件夹)中所有文件提取出来,拷贝到另一个文件夹的根目录下(去掉子目录)

Python目录操作是办公自动化的利器。

将一个文件夹内容拷贝到另一个文件夹下,其实用不到Python,直接ctrl C, ctrl V就完了。

当然,也可以用python来做,比如下面的例子,拷贝过去可以直接用。

import os
import shutil
def copyfile(srcpath, dstpath):
    # 如果目标根目录不存在,则创建目标根目录。
    if not os.path.exists(dstpath):
        os.makedirs(dstpath)
    # 遍历源文件夹,得到根目录,子目录和文件名列表
    for root, dirs, files in os.walk(srcpath, topdown=True):
        # 将目录中根目录部分换成目标目录
        path = root.replace(srcpath, dstpath)
        # 在目标目录中,建立与源目录一样的目录体系
        for dir in dirs:
            if not os.path.exists(os.path.join(path, dir)):
                os.makedirs(os.path.join(path, dir))
        #获取文件名依次遍历
        for name in files:
            # 拷贝文件。
            shutil.copy(os.path.join(root, name), os.path.join(path, name))

srcpath = 'G:\\dir'
dstpath = 'G:\\dir4'
copyfile(srcpath, dstpath)

但是实际上,有一个非常实际的需求,可能是比较棘手的,就是你有一个文件夹,里面有很多文件,包括很多多级的子目录。查阅起来挺麻烦,你想知道这些子文件夹里到底有哪些文件,或者说,想把这些文件都拷贝出来放在一个目录下,也就是把这些文件都抽离出来,方便查看。那么下面的这个程序就很有用了。也可以拷贝过去直接用。

注释写的很清楚了。

import os
import shutil
# 将一个文件夹中的所有文件(包括子文件夹),拷贝到另一个文件夹中,去除子文件夹。
def copyfile_to_onedir(srcpath, dstpath):
    # 遍历源文件夹,得到根目录,子目录和文件名列表
    for root, dirs, files in os.walk(srcpath, topdown=True):
        counter = 0
        #获取文件名依次遍历
        for name in files:
            # 如果该文件在目标目录中已经存在,也就是重复文件,则给文件重命名,否则无法拷贝。
            if os.path.exists(dstpath + '\\' + name):
                counter += 1
                # 获取文件名
                filename = name[0: name.rindex('.')]
                # 获取文件类型(后缀)
                filetype = name[name.rindex('.') + 1: ]
                # 将文件名重命名后,拷贝到目标文件夹,注意,copy的两个参数都要是绝对路径的完整文件名
                shutil.copy(os.path.join(root, name), dstpath + '\\' + filename + str(counter) + '.' + filetype)
            else:
                # 如果该文件未重复,那就直接拷贝就好。
                shutil.copy(os.path.join(root, name), dstpath + '\\' + name)

# copyfile_to_onedir('F:\\新建文件夹', "G:\\新建文件夹1")

希望对大家有所帮助

你可能感兴趣的:(Python程序设计教程,pycharm,ide,python)