matinal:Python实现文件夹的拷贝覆盖

项目有个脚本,操作【文件/文件夹】用的【cp/rm】命令(平时在Mac上使用),现在要在Windows上也能使用,便用Python重写了下,文件/文件夹操作这部分封装了几个函数,做个记录以备后查。

# -*- coding:UTF-8 -*-
#ipath
 
import os,os.path
import shutil
 
#拷贝目录【类似unix下的cp -r aa bb】
def copyDir(srcDir,dstDir):
    if os.path.exists(srcDir):
        __copyDir(srcDir,dstDir)
    else:
        print(srcDir+' not exist')
 
def __copyDir(srcDir,dstDir):
    if not os.path.exists(dstDir):
        shutil.copytree(srcDir,dstDir)
        return
    lists=os.listdir(srcDir)
    for lt in lists:
        srcPath=os.path.join(srcDir,lt)
        goalPath=os.path.join(dstDir,lt)
        if os.path.isfile(srcPath):
            shutil.copyfile(srcPath,goalPath)
        else:
            __copyDir(srcPath,goalPath)
 
#拷贝目录下指定类型文件【类似unix下的cp aa/*.xx bb】
def copyDirExtFiles(srcDir,dstDir,ext,recursion=False):
    if os.path.exists(srcDir):
        __copyDirExtFiles(srcDir,dstDir,ext,recursion)
    else:
        print(srcDir+' not exist')
 
def __copyDirExtFiles(srcDir,dstDir,ext,recursion=False):
    if not os.path.exists(dstDir):
        os.mkdir(dstDir)
    lists=os.listdir(srcDir)
    for lt in lists:
        srcPath=os.path.join(srcDir,lt)
        goalPath=os.path.join(dstDir,lt)
        if os.path.isfile(srcPath):
            tu=os.path.splitext(srcPath)
            if tu[1]==ext:
                shutil.copyfile(srcPath,goalPath)
        elif recursion==True :
            __copyDirExtFiles(srcPath,goalPath,ext,recursion)
 
#删除文件夹下指定类型文件【类型unix下的 rm aa/*.xx】
def delExtFiles(srcDir,ext,recursion=False):
    lists=os.listdir(srcDir)
    for lt in lists:
        srcPath=os.path.join(srcDir,lt)
        if os.path.isfile(srcPath):
            tu=os.path.splitext(lt)
            if tu[1]==ext:
                os.remove(srcPath)
        elif recursion==True:
            delExtFiles(srcPath,ext,recursion)
 
#删除文件夹下所有文件【类似unix下的 rm -r aa/bb】
def rmDirAllFiles(dstDir):
    lists=os.listdir(dstDir)
    for lt in lists:
        srcPath=os.path.join(dstDir,lt)
        if os.path.isfile(srcPath):
            os.remove(srcPath)
        else:
            shutil.rmtree(srcPath)
 
#复制文件
def copyFile(srcFile,dstFile):
    if os.path.isfile(srcFile):
        shutil.copyfile(srcFile,dstFile)
 
#复制文件到指定目录【类似unix下 cp .xx bb】
def copyFileToDir(srcFile,dstDir):
    if os.path.isfile(srcFile):
        tu=os.path.split(srcFile)
        copyFile(srcFile,os.path.join(dstDir,tu[1]))
 
#删除文件【类似unix下 rm aa.xx】
def rmFile(fullPath):
    if os.path.isfile(fullPath):
        os.remove(fullPath)
 
#删除文件夹【类似unix下 rm -r aa】
def rmFloder(dstDir):
    if os.path.exists(dstDir):
        shutil.rmtree(dstDir)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值