python目录操作

复制

import os
import shutil

'''
shutil.copyfile( src, dst)   #文件复制从源src复制到dst中去。 如果当前的dst已存在的话就会被覆盖掉
shutil.move( src, dst)  #移动文件或重命名
shutil.copymode( src, dst) #只是会复制其权限其他的东西是不会被复制的
shutil.copystat( src, dst) #复制权限、最后访问时间、最后修改时间
shutil.copy( src, dst)  #复制一个文件到一个文件
shutil.copy2( src, dst)  #在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
shutil.copytree( src, dst, True) #把src拷贝一份dst,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
'''

def dir_copy(srcpath,dstpath):
    # 复制一个目录下的所有文件到另一个目录下
    if not os.path.exists(srcpath):
        raise Exception('{}不存在'.format(srcpath))
    if not os.path.exists(dstpath):
        # 创建目标目录
        os.makedirs(dstpath)
    # 读取源目录的所有子文件的地址
    for root,dirs,files in os.walk(srcpath,True):
        dst_root = root.replace(srcpath,dstpath)
        if not os.path.exists(dst_root):
            # 创建目标目录
            os.makedirs(dst_root)
        # 操作每一个文件
        for eachfile in files:
            # 复制过去
            shutil.copy(os.path.join(root,eachfile),dst_root)

删除

import os
import shutil

'''
shutil.rmtree( src )   #递归删除一个目录以及目录内的所有内容
'''

def del_file(path):
    '''
    递归删除目录的所有文件
    '''
    ls = os.listdir(path)
    for i in ls:
        c_path = os.path.join(path, i)
        if os.path.isdir(c_path):
            del_file(c_path)
            os.removedirs(c_path)
        else:
            os.remove(c_path)

压缩、解压

import shutil
import zipfile
import os

def dir_archive(srcpath,dstpath):
    '''
    srcpath:待压缩目录
    dstpath:压缩到的地址,会自动加上.zip
    '''
    # 压缩
    shutil.make_archive(dstpath,'zip',srcpath)

def dir_extract(srcpath,dstpath):
    '''
    srcpath:zip文件地址
    dstpath:解压到的目录
    '''
    ## 加上解压目录本身的名字
    #dir_name = srcpath.split('/')[-1].split('\\')[-1].split('.')[0]
    #dstpath = os.path.join(dstpath,dir_name)
    #if not os.path.isdir(dstpath):
    #    os.makedirs(dstpath)
    
    # 解压
    z = zipfile.ZipFile(srcpath, 'r')
    z.extractall(path=dstpath)
    z.close()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值