Windows
上的 xcopy
居然不可以实现 不覆盖文件复制文件夹
于是用python写了一个:
# coding: utf-8
import os
__author__ = 'vanxkr.com'
def vanxkr_copy_tree(in_dir, out_dir, write_exists=False, tabnum=0):
if(0 == tabnum):
print('文件目录复制模式为: %s' % ('覆盖' if write_exists else '跳过'))
if not os.path.exists(out_dir):
os.makedirs(out_dir)
print('%s当前目录: %s' % ('\t'*tabnum, in_dir))
copy_file_counts = 0
copy_dir_counts = 0
for f in os.listdir(in_dir):
in_f = os.path.join(in_dir, f)
out_f = os.path.join(out_dir, f)
if os.path.isfile(in_f):
copy_file_counts += 1
if write_exists or not os.path.exists(out_f): # 文件不存在
open(out_f, "wb").write(open(in_f, "rb").read())
print('%s第 %s 个文件已复制完毕: %s'\
% ('\t'*(tabnum+1),
copy_file_counts,\
os.path.split(in_f)[1]))
else:
print('%s第 %s 个文件已存在跳过: %s'\
% ('\t'*(tabnum+1),
copy_file_counts,\
os.path.split(in_f)[1]))
if os.path.isdir(in_f):
copy_dir_counts += 1
print('%s第 %s 个文件夹: %s' % ('\t'*(tabnum+1), copy_dir_counts, in_f))
vanxkr_copy_tree(in_f,out_f,write_exists,tabnum+1)
if '__main__' == __name__:
d1 = r'd:\d1'
d2 = r'd:\d2'
vanxkr_copy_tree(d1,d2,write_exists=False)
print('复制完毕')
参数 write_exists
True
: 覆盖
False
: 不覆盖