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")

希望对大家有所帮助

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎风工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值