我想從一個複雜的目錄結構,以一個地方移動文件。例如,我有這個深層次:拼合複雜的目錄結構在Python
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)
定義:directory
和glob_recursive
。請注意,我的代碼僅將文件移動到其公共父目錄,而不是任意目標。
如何從複雜的層次結構中的所有文件移動到一個地方簡潔,優雅?
你不處理你正在移動的文件名與目標目錄中的文件名相同的情況。例如,如果源子目錄僅包含名爲hello.txt的文件呢? move()會拋出一個錯誤。 – 7stud
這個解決方案也會留下空的子目錄。爲了解決:商店_dirs你旁邊做文件運行後剛過顯示目錄循環,並呼籲shutil.rmtree,你first_loop_pass設置爲False,然後在最後() – Ben