编程快速上手 第9章 选择性拷贝

import os,re,shutil

# 如果findall()方法查找,必须用下面表格式,如果是r'\w+(\.jpg|\.png|\.pdf)'格式将报错。
fileRe = re.compile(r'\w+\.jpg|\w+\.png|\w+\.pdf')
souDir = r'd:\bcd'
desDir = r'c:\bbc'
if not os.path.exists(desDir): # 目标文件夹不存在,就创建
    os.mkdir(r'c:\bbc')

# 直接在遍历目录树循环的同时挨个将正则匹配出的特定文件,copy至目标文件夹中
for root,dirs,files in os.walk(souDir):
    for filename in files:
        if fileRe.search(filename) != None: # 正则匹配返回none就continue
            shutil.copy(os.path.join(root,filename),desDir)
        continue

--------------------------------------------------------------------------------

# 通过正则表达式查找特定文件后,以列表方式存储文件绝对路径,再遍历列表copy列表中的文件
desFileList = []
for root,dirs,files in os.walk(souDir):
    for filename in files:
        if fileRe.search(filename) != None:
            desFileList.append(os.path.join(root,filename))
        continue
        
for i in desFileList:
    shutil.copy(i,desDir)

--------------------------------------------------------------------------------
# 重复工作首选方式
# 通过函数方式实现:
def copyFile(souDir,desDir,fileRe):
    '''souDir  要查找的目录;
       desDir  保存找到特定文件的目录;
       fileRe  要查找文件的正则表达式定义
    '''
    fileRe = re.compile(fileRe)
    if not os.path.exists(desDir): # 目标文件夹不存在,就创建
        os.mkdir(desDir)
        
    # 直接在遍历目录树循环的同时挨个将正则匹配出的特定文件,copy至目标文件夹中
    for root,dirs,files in os.walk(souDir):
        for filename in files:
            if fileRe.search(filename) != None: # 正则匹配返回none就continue
                shutil.copy(os.path.join(root,filename),desDir)
            continue

# 函数调用
copyFile(r'd:\bcd',r'c:\bbc',r'\w+\.jpg|\w+\.png|\w+\.pdf')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值