最近托管各个学院网站的服务器准备迁移,配置导出很蛋疼,加上那个防篡改的软件,有些东西只能手动复制,于是只好写了个脚本根据防篡改软件导出的配置来自动复制文件,代码如下,当然,给别人看没有缩进的python代码就是耍流氓的行为,这有gist。
import os from copy import deepcopy import xml.etree.ElementTree as ET import shutil err_file = open("error.txt", "w") success_file = open("success.txt", "w") src_path_list = [] suffix_list = [] enter = raw_input("Press Enter key to continue to glean the files") root = ET.parse("writeguard.xml").getroot() for child in root: if child.tag == 'Exception': print 'Find Exception Dir' exception_xml = deepcopy(child) for path in exception_xml: print 'Add dir:', path.text src_path_list.append(path.text) if child.tag == 'SuffixExc': suffix_xml = deepcopy(child) suffix_list = suffix_xml.text.split('/') for i in range(0, len(suffix_list)): suffix_list[i] = suffix_list[i][1:] for src_path in src_path_list: for dirpath, dirnames, filenames in os.walk(src_path): src_dir = dirpath dst_dir = os.path.abspath('.') + dirpath.split(':')[1] if not os.path.exists(dst_dir): os.makedirs(dst_dir) for filename in filenames: if os.path.splitext(filename)[1] in suffix_list: src_filename = src_dir + '\\' + filename dst_filename = dst_dir + '\\' + filename try: shutil.copy(src_filename, dst_filename) print src_filename, '====>', dst_filename success_file.write(src_filename+'===>'+dst_filename+'\n') except Exception, e: print src_filename, '====>', dst_filename err_file.write(src_filename+'===>'+dst_filename+'\n') print e success_file.close() err_file.close()