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")

  

时间: 2024-10-14 03:35:19

python 小程序 复制目录树的相关文章

python 小程序 比较目录间的差异

比较目录间的差异: I 只按照名称做了比较,如果目录的文件名称相同,但是内容不同脚本认为为相同文件 II 针对目录下面的目录没有循环比较,只是比较了目录的名称 import sys, os def difference(seq1, seq2): """ 返回仅在seq1中的项 """ return [item for item in seq1 if item not in seq2] def reportdiff(unique1, unique2

python小程序之一

来个Python小程序 #输入年月日确定这个日期是一年中的第多少天# -*- coding: UTF-8 -*-y=int(raw_input("请输入年:"))m=int(raw_input("请输入月份:"))d=int(raw_input("请输入日期:"))a=(0,31,28,31,30,31,30,31,31,30,31,30,31)if m>12: raise ValueError("输入月份错误")if

Python 小程序,对文件操作及其他

下面是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比如说,从文件中读取一行数据,分别存放于列表中,再对列表进行操作,如去掉里面的重复项,排序等操作. 常见对文件中行进行操作: #这里列出两个常用的方法 方法01: 一次性读取所有行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print l

Python 小程序,对文件操作及其它

以下是自己写的几个对文件操作的小程序,里面涉及到文件操作,列表(集合,字典)的运用等.比方说,从文件里读取一行数据.分别存放于列表中,再对列表进行操作.如去掉里面的反复项.排序等操作. 常见对文件里行进行操作: #这里列出两个经常使用的方法 方法01: 一次性读取全部行 >>> f = file('1.txt') >>> while 1: lines = f.readlines() if not lines: break for line in lines: print

第一个python小程序,2进制转10进制

#Bin to Dec #my first python programe n = c = itm = 0 a = raw_input('please input Binary number:\n') for n in range(0,len(a)):    b = a[n:n+1] #   print 'n is', n #   print 'b is',b #   print 'len',len(a[n:])       if b == '1':    c = 2**(len(a[n:])-

Python小程序,读取ACCESS数据库,然后list数据

曾经做过的一个Python小程序,读取ACCESS数据库,然后list数据 # -*- coding: cp936 -*-import wximport wx.libimport sys,glob,randomimport win32com.clientreload(sys)sys.setdefaultencoding('utf-8')class DemoFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,u"安

Python小程序练习二之装饰器小例子

Python小程序练习二之装饰器小例子 装饰器: 装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就不能大批量的修改源代码,这样是不科学的也是不现实的,因为就产生了装饰器,使得其满足: 1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 那么根据需求,同时满足了这两点原则,这才是我们的目的. 装饰器的原则组成: < 函数+实参高阶函数+返回值高阶函数+嵌套函数+语法糖 = 装饰器 > 错误例子: 1.1Decorators.py 1 # The aut

一个有意思的Python小程序(全国省会名称随机出题)

最近比较迷Python,仿照<Python编程快速上手>8.5写了一个随机出卷的小程序.程序本身并不难,关键是解决问题的思路,还有就是顺便复习了一下全国地名(缅怀一下周总理). OK其实还是有一个难点的,就是关于Python的中文编码问题,如何把中文字典输入到txt然后再把它读出来,程序中借用了json方法,而且在输出时decode.encode,有一些参考的价值吧.废话不说了,上程序. # *encoding:utf-8 * from __future__ import print_func

Python小程序代码片

用于记录自己写的,或学习期间看到的不错的,小程序,持续更新...... **************************************************************** [例001]计算:1-2+3-4..+199-200值 #encoding=utf-8 #计算 1-2+3-4..+199-200值 #1+3+5+7+...199 #-2-4-6...-200 sum1 = 0 sum2 = 0 for i in range(1,200,2): #计算1+3+5