python 小程序 复制目录树

1. 将一个目录树完全复制到另外一个目录下面

import os, sys

"""
复制目录树
"""

maxloadsize = 1024 * 1024


def copyfile(frompath, topath, maxloadsize= maxloadsize):
    """
    单个文件的复制
    :param frompath:原文件
    :param topath: 复制到的文件
    :param maxloadsize: 复制最大块
    :return:
    """
    fromfilename = os.path.split(frompath)[1]
    (dirpath,filename) = os.path.split(topath)
    if fromfilename != filename:
        topath = os.path.join(dirpath, fromfilename)
        print("changed copy file name:" + topath)
    if os.path.getsize(frompath) <= maxloadsize:
        with open(frompath, "rb") as fromfile:
            with open(topath, "wb") as tofile:
                bytes = fromfile.read(maxloadsize)
                tofile.write(bytes)
    else:
        with open(frompath, "rb") as fromfile:
            with open(topath, "wb") as tofile:
                while True:
                    bytes = fromfile.read(maxloadsize)
                    if not bytes:break
                    tofile.write(bytes)


def copytree(dirfrom, dirto, verbose = 0):
    if not os.path.isdir(dirto):
        os.mkdir(dirto)
    fount = tcount =0
    for filename in os.listdir(dirfrom):
        pathfrom = os.path.join(dirfrom, filename)
        pathto = os.path.join(dirto, filename)
        if not os.path.isfile(pathfrom):
            # 目录循环copy
            try:
                os.mkdir(pathfrom)
                fc,tc = copytree(pathfrom, pathto)
                fount += fc
                tcount += tc
            except:
                print("Error copying from {0} to {1}".format(pathfrom, pathto))
        else:
            # 文件直接copy
            try:
                print("copy from {0} to {1}".format(pathfrom, pathto))
                copyfile(pathfrom, pathto)
                fount += 1
            except:
                print("Error copying from {0} to {1}".format(pathfrom, pathto))
    return (fount, tcount)

if __name__ == '__main__':
    #copyfile("../testdir1/test1.pdf", "../testdir/testfdf.pdf")
    copytree("../lession6","../less")

  

转载于:https://www.cnblogs.com/someoneHan/p/6254335.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值