分享Python制作的单向目录同步打包工具

sync_tools.py 下载:

CSDN http://download.csdn.net/detail/coollen_mmx/4952759

github https://github.com/coollen/GGSvr/blob/master/tools/sync_tools.py


简单说明:

sync_dir : 同步两个目录(从源到目标)

zip_dir : 打包目录

打包版本时候,只要简单配置就行了,十分方便,linux下,windows下都适用


import os,time,shutil,zipfile

# 同步目录
# src_dir 源目录
# dst_dir 目标目录
# is_recursion 是否递归
# ignores 忽略文件名列表
def sync_dir(src_dir, dst_dir, is_recursion=True, ignores=[]):
	files = os.listdir(src_dir)
	for f in files:

		# 忽略列表
		if f in ignores: continue

		src_path = os.path.join(src_dir, f)
		dst_path = os.path.join(dst_dir, f)

		if os.path.isdir(src_path):

			# 是否递归
			if not is_recursion: continue

			# 创建目录
			try:
				os.mkdir(dst_path)
				print "mkdir", dst_path
			except:
				pass

			sync_dir(src_path, dst_path, is_recursion, ignores)

		else:
			print "copy", src_path, dst_path
			shutil.copyfile(src_path, dst_path)



# 压缩目录
def zip_dir(src_dir, output_file, is_recursion=True, ignores=[]):
	f = zipfile.ZipFile(output_file, 'w', zipfile.ZIP_DEFLATED)
	_zip(src_dir, f, is_recursion, ignores, src_dir)
	f.close()

def _zip(src_dir, zip_file, is_recursion, ignores, root_path):
	files = os.listdir(src_dir)
	for f in files:

		# 忽略列表
		if f in ignores: continue

		src_path = os.path.join(src_dir, f)
		zip_path = src_path[len(root_path):]

		if os.path.isdir(src_path):

			# 是否递归
			if not is_recursion: continue

			# 创建目录
			try:
				zip_file.write(src_path, zip_path)
				print "mkdir", src_path, zip_path
			except:
				pass

			_zip(src_path, zip_file, is_recursion, ignores, root_path)

		else:
			print "zip", src_path, zip_path
			zip_file.write(src_path, zip_path)



def main():
	print "run -------------------"

	# test
	sync_dir('./src', './dst', True, ['svn'])
	zip_dir('./src', './out.zip', True, ['svn'])

	print "over ------------------"



if __name__ == '__main__':
	main()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值