我想把文件从一个复杂的目录结构移到一个地方。例如,我有一个深层次的层次结构:
foo/
foo2/
1.jpg
2.jpg
...
我希望是:
1.jpg
2.jpg
...
我目前的解决方案:
def move(destination):
for_removal = os.path.join(destination, '\\')
is_in_parent = lambda x: x.find(for_removal) > -1
with directory(destination):
files_to_move = filter(is_in_parent,
glob_recursive(path='.'))
for file in files_to_move:
shutil.move(file, destination)
定义:^{
如何将所有文件从复杂的层次结构简洁优雅地移动到单个位置?
这样做可以,如果文件发生冲突,它也会重命名文件(我注释掉了实际的移动并替换为副本):
在目录中递归运行,移动文件并启动目录的
move
:我不想测试将要移动的文件的名称,看我们是否已经在目标目录中。相反,此解决方案只扫描目标的子目录
说明:os.walk以“自顶向下”的方式递归地遍历目的地。整个文件名是用os.path.join(root,filename)调用构造的。现在,为了防止扫描目标顶部的文件,我们只需要忽略os.walk迭代的第一个元素。为此,我使用islice(iterator,1,None)。另一个更明确的方法是:
相关问题 更多 >
编程相关推荐