将指定目录下的文件转移或复制到另一目录

文章


将指定目录下的文件转移或复制到另一目录,示例代码如下:

import shutil
import re
import os

# 获取指定目录下的文件名 返回文件名列表  ori_path为初始指定目录地址
def get_file_names(ori_path):
    # 获取指定目录下的文件名
    file_names = os.listdir(ori_path)
    # 打印文件名进行查看
    # print("file_names:\n",file_names)
    # 打印指定目录下的文件数目
    print("num of files:",len(file_names))
    # 将文件名列表返回
    return file_names

# 使用正则表达式 筛选文件名 返回文件名列表   file_names为传入的文件名列表  format为正则表达式,是可选参数
def filename_filter(file_names,format='.*'):
    # filenames用于存储筛选后的文件名
    filenames = []
    for filename in file_names:
        # 使用正则表达式筛选文件名
        temp = re.search(rf'{format}',filename)
        # 若匹配成功,则继续执行
        if temp:
          # 将筛选后的文件名存入filenames
          filenames.append(temp.group(0))
    # 打印筛选后的文件名数量
    print("num of files after filting:",len(filenames))
    # 打印筛选后的文件名进行查看
    # print("filenames:\n",filenames)
    # 返回筛选后的文件名列表
    return filenames

# 组合路径和文件名进行文件的复制或转移  ori_path为初始指定目录地址  des_path为目标目录地址  filenames为筛选后的文件名列表
def change_dir(ori_path,des_path,filenames):
    # 遍历将文件移入指定目录地址
    for filename in filenames:
        if not os.path.isfile(ori_path+filename):
            print("%s not exist!" % (ori_path+filename))
        else:
            # 若路径不存在则创建路径
            if not os.path.exists(des_path):
                    os.makedirs(des_path)  # 创建路径
            # shutil除了有copy方法之外,还有move方法可以直接将数据剪切到指定目录,使用方法和copy方法一样
            shutil.copy(ori_path + filename, des_path + filename)  # 移动文件
            print("copy %s -> %s" % (ori_path + filename, des_path + filename))


if __name__=="__main__":
    # ori_path为初始指定目录地址
    ori_path = "D:/jupyter_notebook/learning_keras/image/train/"   # 注意路径最后要加/
    # des_path为目标目录地址
    des_path = "D:/jupyter_notebook/learning_keras/image/train/dog/"   # 注意路径最后要加/
    # 获取指定目录下的文件名
    file_names = get_file_names(ori_path)
    # 筛选文件 默认情况不指定format参数的话是不进行筛选的
    # filenames = filename_filter(file_names)
    # 指定format参数筛选文件名
    filenames = filename_filter(file_names,format='dog.[0-9]{0,5}.jpg')
    # 组合路径和文件名进行文件的复制或转移
    change_dir(ori_path,des_path,filenames)

tips

  • shutil除了有copy方法之外,还有move方法可以直接将数据剪切到指定目录,使用方法和copy方法一样。
  • 正则表达式忘了的话,可以在Python 正则表达式r2coding快速学习使用。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

布兹学长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值