我是新來的Python,雖然已經閱讀並享受它爲止,有∂經驗,其中∂→0重新創建輸入文件夾樹分析
我有一個文件夾樹,每個文件夾在樹的分支的底部包含許多文件。對我來說,這整棵樹在輸入。
我會執行幾個分析步驟(我相信這些與這個問題無關),我希望返回的結果與輸入的結果相同,稱爲輸出。
我有兩個想法:
- 通讀遞歸使用os.walk()每個文件夾和每個文件進行分析,並
- 使用這樣的功能shutil.copytree()和沿途某處進行分析。所以實際上,我不想複製樹,而是複製它的結構,但用新文件。我認爲這可能是一種'黑客',因爲我確實想要使用每個輸入文件來創建輸出文件,所以我不需要
copy
命令,而需要一個analyse
命令。其餘的應該保持不變,只要我的想象力讓我明白。
我有選擇1和與選項2
對於規模較小的樹木了零經驗小經驗,到現在爲止我已經硬編碼的路徑,這已經變得太耗費時間,在這一點上。
我也看到了更多的平凡方式,如使用glob
先找到所有我想和對他們的工作的文件,但我不知道如何這可能幫助找到一個快捷方式重現輸入樹爲我的輸出。
我在選項1的嘗試看起來是這樣的:
import os
for root, dirs, files in os.walk('/Volumes/Mac OS Drive/Data/input/'):
# I have no actual need to print these, it just helps me see what is happening
print root, "\n"
print dirs, "\n"
# This is my actual work going on
[analysis_function(name) for name in files]
但我擔心這將是非常緩慢的,我也想這樣做某種上的文件過濾太 - 例如.DS_Store
文件在mac樹中創建的結果包含在上述結果中。我會嘗試使用fnmatch
模塊來只過濾我想要的文件。
我在copytree
函數中看到,可以根據模式忽略文件,這可能會有所幫助,但是我不明白從哪裏可以將分析函數放在每個文件上。
我已經成功地實現了這個,纔不得不作出(具體到我的模型)的輕微變化 - 它就像一個魅力!非常感謝! –