让编程成为一种习惯!坚持到2017!(2016.01.07)(Python:复制目录树)

让编程成为一种习惯!坚持到2017!有奖监督,如果发现我那天没写,我送乾颐堂T恤!(如果发现我哪天没有写,第一个微博或者博客留言的朋友,我送乾颐堂T恤)

==================Python:复制目录树=====================

import os, sys
maxfileload = 1000000
blksize = 1024 * 500

def copyfile(pathFrom, pathTo, maxfileload=maxfileload):
	if os.path.getsize(pathFrom) <= maxfileload:
		bytesFrom = open(pathFrom, 'rb').read()
		open(pathTo, 'wb').write(bytesFrom)
	else:
		fileFrom = open(pathFrom, 'rb')
		fileTo = open(pathTo, 'wb')
		while True:
			bytesFrom = fileFrom.read(blksize)
			if not bytesFrom: break
			fileTo.write(bytesFrom)

def copytree(dirFrom, dirTo, verbose = 2):
	fcount = dcount = 0
	for filename in os.listdir(dirFrom):
		pathFrom = os.path.join(dirFrom, filename)
		pathTo = os.path.join(dirTo, filename)
		if not os.path.isdir(pathFrom):
			try:
				if verbose > 1: print('copying', pathFrom, 'to', pathTo)
				copyfile(pathFrom, pathTo)
				fcount += 1
			except:
				print('Error copying', pathFrom, 'to', pathTo, '--skipped')
				print(sys.exc_info()[0], sys.exc_info()[1])
		else:
			if verbose: print('copying dir', pathFrom, 'to', pathTo)
			try:
				os.mkdir(pathTo)
				below = copytree(pathFrom, pathTo)
				fcount += below[0]
				dcount += below[1]
				dcount += 1
			except:
				print('Error creating', pathTo, '--skipped')
				print(sys.exc_info()[0], sys.exc_info()[1])
	return (fcount, dcount)

def getargs():
	try:
		dirFrom, dirTo = sys.argv[1:]
	except:
		print('Usage error: cpall.py dirFrom dirTo')
	else:
		if not os.path.isdir(dirFrom):
			print('Error: dirFrom is not a directory')
		elif not os.path.exists(dirTo):
			os.mkdir(dirTo)
			print('Note: dirTo was created')
			return (dirFrom, dirTo)
		else:
			print('Warning: dirTo already exists')
			if hasattr(os.path, 'samefile'):
				same = os.path.samefile(dirFrom, dirTo)
			else:
				same = os.path.abspath(dirFrom) == os.path.abspath(dirTo)
			if same:
				print('Error: dirFrom same as dirTo')
			else:
				return (dirFrom, dirTo)

if __name__ == '__main__':
	import time
	dirstuple = getargs()
	if dirstuple:
		print('Copying...')
		start = time.clock()
		fcount, dcount = copytree(*dirstuple)
		print('Copyed', fcount, 'files', dcount, 'directorys', end = ' ')
		print('in', time.clock() - start, 'seconds')<span style="color:#6f3198;">

</span>

========================================
下面是代码的共享链接:
http://yunpan.cn/cm6MKfB8bz3ez  访问密码 4687

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值