# -*- coding: cp936 -*-
import re
from os.path import dirname
import shutil
import os
pattern = '^#\s*include\s+(<)(.+)(>)(.*)$'
prog = re.compile(pattern)
find_sets = []
def create_dir(file_dir):
#print dirname(_dir);
_dir = dirname(file_dir)
if not os.path.exists(_dir):
os.makedirs(_dir)
def copyHeadFile(root_dir, src_path, des_path, deep = 0):
if((root_dir + src_path) in find_sets):
return
if( not os.path.exists(root_dir + src_path) ):
return
create_dir(des_path + src_path)
shutil.copyfile(root_dir + src_path, des_path + src_path);
find_sets.append(root_dir + src_path)
src_file = open(root_dir + src_path, 'r')
print ''.rjust(deep) + des_path + src_path
for line in src_file:
if prog.search(line):
line = re.sub('(^#\s*include\s+(<))|(>)(.*)$', '', line)
line = line.replace('/', '\\')
line = line.rstrip('\n')
copyHeadFile( root_dir, line, des_path, (deep + 4))
copyHeadFile("D:\\Program Files\\Microsoft Visual Studio 8\\VC\\include\\", "stdafx.h", "d:\\need_hpp\\" )
Python偶而玩玩也很爽。 這個腳本的來例:我寫的demo用到了不少boost的東西,代碼交給領導檢查的時候,又不能把整個boost 都拷貝給他,這個腳本能把引用到的頭文件導出到指定的目錄里面。