Если я правильно понять, вы хотите, чтобы в конечном итоге что-то вроде следующего:
root/object
содержащего data
root/users/otherobj
, содержащего data
- и так далее
Итак, давайте сломаем это немного. Вы в основном должны иметь возможность сделать две вещи:
- определить, является ли значение ключа в вашем словаре есть «данные» или другой словарь
- дал некоторые данные, записать его в файл с заданной траектории
Я собираюсь оставить вас, чтобы написать эти функции, но я предполагаю, что они имеют следующие подписи:
def is_data(obj)
возвращающиеся True/False
(это может быть not isinstanceof(obj, dict)
, если ваши данные объекты не могут быть dicts с некоторыми специальными свойствами)
def write_data(directory, filename, obj)
На данный момент мы готовы написать функцию, чтобы ходить по дереву. Я собираюсь предположить, что вы вытащили первый ключ и словарь из Main
. Для каждой пары (ключ, значение) нам нужно проверить, является ли значение «данными» или если это другой dict. Если это данные, напишите. Если это еще один dict, мы добавляем ключ к нашему пути и вызываем нашу функцию на , что dict.
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 Рука, полная ложной магии Google, которая мне совсем не помогла. Правда, я не знаю, что попробовать. Вот почему я здесь. – Cyanite
Полезные функции для управления файлами и каталогами находятся в модулях 'os',' os.path' и 'shutil'. Вы можете использовать их из рекурсивной функции, которая проходит через ваш диктофон. –