如果我理解正確,你想要的東西,如以下落得:
root/object
含data
root/users/otherobj
含data
- 等
所以讓我們來破解這個有點。基本上,您需要做兩件事情的能力:
- 決定在你的字典鍵的值是否爲「數據」,或給予一定的數據的另一種解釋
- ,它與給定的路徑寫入到一個文件
我將它留給你寫這些功能,但我認爲它們具有以下特徵:
def is_data(obj)
返回True/False
(這可能是not isinstanceof(obj, dict)
,除非你的數據對象可能是一些特殊的屬性類型的字典)
def write_data(directory, filename, obj)
在這一點上,我們已經準備好寫遍歷樹的功能。我假設你將第一個關鍵字和字典從Main
中取出。對於每個(鍵,值)對,我們需要檢查值是「數據」還是另一個字典。如果是數據,寫出來。如果是另一個字典,我們將密鑰添加到我們的路徑中,並撥打字典。
def walk(root_directory, obj_dict):
for k, v in obj_dict.iteritems():
if is_data(v):
# write the file
write_data(root_directory, k, v)
else: # it's another dict, so recurse
# add the key to the path
new_root = os.path.join(root_directory, k) # you'll need to import os
walk(new_root, v)
@ZdaR一手滿是谷歌的虛假魔術,根本沒有幫助我。真相是我不知道該怎麼嘗試。這就是我來這裏的原因。 – Cyanite
操作文件和目錄的有用函數在'os','os.path'和'shutil'模塊中。你可以使用遞歸函數來遍歷你的字典。 –