上周,我搜索了数十个答案,但未能找到我要尝试做的事的例子,很高兴指出我想念的事情,而我我是Python的新手,所以如果这很琐碎,我深表歉意。
我正在尝试从JSON文件中读取配置,以便可以从脚本本身中提取配置。
我希望能够将配置值分配给变量并对其执行操作,然后再转到嵌套列表中的下一个类别,该类别的类别可以随时间变化/扩展(音乐,图片,等等)。
JSON文件(library.json)当前如下所示:
{"media":{
"tv": [{
"source": "/tmp/tv",
"dest": "/tmp/dest"
}],
"movies": [{
"source": "/tmp/movies",
"dest": "/tmp/dest"
}]
}}
相关脚本如下:
import json
with open(libfile) as data_file:
data = json.load(data_file)
for k, v in (data['media']['tv']):
print (k, v)
我希望看到的输出是:
dest /tmp/dest
source /tmp/tv
我看到的是:
dest source
感觉好像我缺少一些简单的东西。
答案 0 :(得分:1)
这有效,
import json
with open('data.json') as json_file:
data = json.load(json_file)
for p in data['media']['tv']:
dst = (p['dest'])
src = (p['source'])
print (src, dst)
答案 1 :(得分:0)
import json
with open("dummy.json") as data_file:
data = json.load(data_file)
for i, j in data["media"].items():
print(i)
print("\n".join(f'{str(k)} {str(l)}' for k,l in list(zip(j[0].keys(), j[0].values()))))
print("\n")
输出:
tv
source /tmp/tv
dest /tmp/dest
movies
source /tmp/movies
dest /tmp/dest
答案 2 :(得分:0)
这里的问题是data['media']['tv']
实际上是词典的列表。
您可以看到它,因为它看起来像这样:"movies": [{..
(请注意括号[
)
这意味着代替此:
for k, v in (data['media']['tv']):
print (k, v)
您应该这样做:
for dct in (data['media']['tv']):
for k, v in dct.items():
print(k, v)