Scons多目录复制/压缩

时间:2013-02-26 19:39:16

标签: python scons

问题:

我有2个源目录,一个在“当前”目录中,另一个在其他目录中“

1:C:/ somedir / dir_a / [win32,win64] / [测试,文档,a,b]


2:D:/ projects / project_a / api / [win32,win64] / [tests,a,b,c]

sconstruct @ D:/ projects / project_a / sconstruct

现在我想将两个目录放在zip文件中,根目录为“win32”。 目录2(D:/ ..)已经在sconstruct中复制了win32文件夹+内容,这意味着(afaik)D:/ projects / project_a / api / win32(或win64)已经成为目标,就scons而言

我尝试了什么:

当我尝试将目录1(c:/ ..)复制到目录2时,它根本不会,因为目标已经存在。所以这是第一次尝试。

第二次尝试我使用env.Zip来获取Zip中的2个目录,这很有效,但它们完全错误。拉链看起来如下:

zip..somedir/dir_a/win32/[tests, documentation, a, b]
   |.api/win32/[tests, a, b, c]

我想要的地方:

zip..win32/[tests, documentation, a, b, c]

有没有办法在Scons中正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

找到解决方案:

大家好,

为我没有root的copytree问题找到了一个合适的解决方案。

使用累计器@ http://www.scons.org/wiki/AccumulateBuilder

然后将其称为:

target = "dir where you want to copy contents of source"
basedir = "source dir containing content to be copied"
env.Accumulate(target, [os.path.join(basedir ,x) for x in os.listdir(basedir)])

希望这有助于将来遇到类似问题的其他人:)