我在stackoverflow中读过许多与python比较目录相关的问题。不过,我现在的问题有点不同。
我有两个目录,其中包含两个不同版本的发布包内容。现在我想比较一下,以确保内容是相同的。但是很少有文件将版本名嵌入其中。现在,哪种方法是比较它们并得出结论的最佳方法(除了版本差异,所有文件都匹配)。在
例如:
V1R1C1版本包含如下目录结构
pmt> find . -name "*"
.
./c1
./c1/c2
./c1/c1_V1R1C1.cfg
./a1
./a1/a1_V1R1C1.cfg
./a1/a2
./a1/a2/a1a2_V1R1C1.cfg
./b1/a_best_file.txt
./b1/b2/a_test_file.txt
./b1/b2/b1b2_V1R1C1.cfg
./a_V1R1C1.cfg
版本V2R3C1可能包含以下结构
^{pr2}$在上述情况下,程序必须将其标记为等价的结构。在
我能想到一些解决方案-例如,递归地将两个目录结构读入缓存(dict),翻录版本信息并进行比较等等,但是看起来并不是一个完全有效的机制,因为两个原因1。它没有使用内置的目录比较2,多次读取/删除/比较是有一定成本的(尤其是对于巨大的目录树结构)。在
我正在寻找的想法,是简单和有效的比上面的一个。在
附言:
1如果有任何差异(除了与上述示例不同的版本),我想使用左/右等来获得不同的列表。
2我们可以假设prefore hand是两个目录中的版本名(比如第一个是V1R1C1,第二个是V2R3C1)。在
可能你可以用一个单独的循环来迭代一个列表中的一个条目,或者在一个单独的列表中迭代一个列表。在
这样就不会生成大量的文件名,然后再进行筛选。在
http://docs.python.org/py3k/library/glob.html#module-glob
使用集合比较怎么样?在
相关问题 更多 >
编程相关推荐