如何解决如何从嵌套字典创建文件夹?
如何用嵌套字典中所有词典的名称创建文件夹? 该代码应遍历字典并创建目录结构,就像保留所有层次结构的嵌套字典一样。
dic = {
"root": {
'0_name': {
"0_name_a": {
"0_name_a_a": {
},"0_name_a_b": {
"file": "file"
}
},"0_name_b": {
}
},"1_name": {
},"2_name": {
},"3_name": {
"3_name": {
},}
}
}
应该将目录设置为:
root/0_name
root/0_name/0_name_a
root/0_name/0_name_a/0_name_a_a
root/0_name/0_name_a/0_name_a_b
root/0_name/0_name_b
root/1_name/1_name_a
root/2_name/
root/3_name/3_name(the same name)
脚本需要确定该值是否为最终值,并使用该路径创建一个文件夹,然后从字典中删除该值并重新开始。还可以通过某种方式识别“文件”类型并跳过它。我无法确定一种递归的方式来迭代所有值并将其添加到路径。
我的方法(绝对不起作用,只是将其粘贴以显示某些内容):
def rec(dic):
path = []
def nova(dic):
for k,v in dic.copy().items():
if isinstance(v,dict):
path.append(k)
if not v:
print(os.path.join(*path))
path.clear()
dic.pop(k)
nova(v)
if path == []:
nova(dic)
解决方法
您将需要一个递归程序,并且“ path”的值必须是该递归的一部分。
这不是您想要的,但是很接近。
def handle_problem(dic):
def one_directory(dic,path):
for name,info in dic.items():
next_path = path + "/" + name
if isinstance(info,dict):
print("Creating " + next_path) # actually use mkdir here!
one_directory(info,next_path)
one_directory(dic,'')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。