前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matinal:Python实现文件夹的拷贝覆盖

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

作者头像
matinal
发布2023-10-14 14:04:25
3080
发布2023-10-14 14:04:25
举报
文章被收录于专栏:SAP Technical

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

代码语言:javascript
复制
# -*- 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)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档