我有一个这样的嵌套字典:
Main = {
'root' : {
'object': 'data'
'users': {
'otherobj': 'data'
}
}
}
/tree/
中创建一个文件树,其中每个dict的名称是文件夹的名称答案 0 :(得分:0)
此代码段应该有所帮助。这里我假设python脚本将在目标本地目录中运行。
import os
# dir_definition = <your 'Main'>
def create_dirs(dir_definition):
for dir_dame, sub_dir in dir_definition.items():
os.mkdir(dir_dame)
if isinstance(sub_dir, dict):
create_dirs(sub_dir)
答案 1 :(得分:0)
如果我理解得当,你最终会得到以下内容:
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)