簡體   English   中英

將文件夾中的文件移動到頂級目錄

[英]Move files in folders to a top-level directory

我正在嘗試為我的工作完成一個清理文件組織系統的腳本。 我的腳本的最后一部分需要進入給定目錄中的所有文件夾,並將每個文件夾中的所有文件移動到目錄中。 例如:

import os
path = 'C:/User/Tom/Documents'
folders = os.listdir(path)
print(folders)

讓我們說文件夾結構是這樣的:

Documents  
[________ Folder A    
..................[_________ File 1  
..................[_________ File 2  
[________ Folder B  
..................[_________ File 3  
..................[_________ File 4  
[________ Folder C  
..................[_________ File 5  
..................[_________ File 6  
..................[_________ File 7  

我的目標是以某種方式進入“文檔”下的每個文件夾,通過將所有文件移動一級來清空文件夾,而無需在文檔路徑中輸入文件夾名稱或文件名,如下所示:

Documents  
[________ Folder A    
[_________ File 1  
[_________ File 2  
[________ Folder B  
[_________ File 3  
[_________ File 4  
[________ Folder C  
[_________ File 5  
[_________ File 6  
[_________ File 7  

我是python的新手,我對如何有效地做到這一點的唯一想法是輸入進入每個文件夾目錄的很多代碼,以及shutil.move()它們。 但是這對我的應用程序不起作用,因為腳本需要能夠使用Y量的文件完成此X任務文件夾的任務,而不必輸入每個文件夾路徑。

我要求以有效的方式提出任何建議,我可以遍歷我的“文件夾”列表,只需將文件從文件夾中移出到路徑的目錄中即可。
對不起,很長的帖子,我只想盡可能詳細地說明我的問題,謝謝!

我建議使用os.walk進行遞歸的自下而上遍歷,並相應地移動文件。

import os
import shutil
doc_path = 'C:/User/Tom/Documents'

for root, dirs, files in os.walk(doc_path, topdown=False):
    for file in files:
        try:
            shutil.move(os.path.join(root, file), doc_path)
        except OSError:
            pass

這會將所有內容移動到頂級目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM