最近,我下載了一個大型在線資料集(大約 12 TB 大小),其中包含虛擬中間檔案夾,如下圖左側所示。
我想洗掉(折疊)所有中間檔案夾,如下圖右側:

方法 1)我可能會嘗試以下 python 腳本(使用 shutil.move)來洗掉中間檔案夾。
import shutil
import glob
source_path = 'C:\downloaded_data\01\001\2022_01'
moving_folders = glob.glob(source_path "\*")
dest_path = 'C:\downloaded_data'
for item in moving_folders:
shutil.move(item, dest_path)
方法2)我也可以使用以下Powershell命令:
Get-ChildItem –Path C:\downloaded_data\01\001\2022_01\* | Move-Item -Destination C:\downloaded_data
方法 1 和 2 都只是基于對所有檔案的復制/洗掉操作嗎?誰能評論哪個更快?
uj5u.com熱心網友回復:
這兩種方法都應該很快,因為您要在給定的目錄樹中移動檔案夾,從而在同一卷上進行定義。這樣做不需要復制檔案,只需將現有目錄“連接”到不同的父目錄。
如果您已經從 PowerShell 運行,PowerShell 解決方案可能(有點)更快,因為您沒有創建 Python 子行程的開銷。
我建議重新撰寫 PowerShell 命令,如下所示:
Get-ChildItem -Directory –LiteralPath C:\downloaded_data\01\001\2022_01 |
Move-Item -Destination C:\downloaded_data
-Directory限制匹配到目錄。- 考慮到隱式列舉給定目標路徑的子路徑(假設它是一個目錄)
\*,洗掉了不必要的尾隨。指定給定路徑將按字面解釋而不是通配符運算式。Get-ChildItem-LiteralPath
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518221.html
標籤:Python电源外壳
上一篇:如果未在代碼的其他部分或其他點源腳本中定義,如何檢查然后定義函式
下一篇:禁用用戶AD中的E3許可證清理
