待分析项目是OSGi结构,源代码目录src散布在多个模块目录下(如origin目录所示),现在需要分析整个项目的源代码,要将各个src目录下的所有内容合并到一起,
origin ├── mod1 │ ├── conf │ │ └── app.conf │ ├── lib │ │ └── dep.jar │ └── src │ └── com │ └── boco │ └── d21.java ├── mod2 │ ├── conf │ │ └── app.conf │ ├── lib │ │ └── dep.jar │ └── src │ └── com │ └── boco │ └── d22.java └── build.xml
合并后的目录结构如下:
final ├── mod1 │ ├── conf │ │ └── app.conf │ └── lib │ └── dep.jar ├── mod2 │ ├── conf │ │ └── app.conf │ └── lib │ └── dep.jar ├── build.xml └── src └── com └── boco ├── d21.java └── d22.java
Python实现如下:
import os import distutils.dir_util basedir = '/home/chad/tmp/final' src_name = 'src' for root, dirs, files in os.walk(basedir): print 'root = ', root if root.endswith(src_name): dst = basedir+'/'+src_name distutils.dir_util.copy_tree(root, dst) distutils.dir_util.remove_tree(root) print 'move ', root, ' to ', dst
可以注释掉remove_tree一行,从而验证拷贝过程中是否丢失了文件。