我对Python很陌生,但我选择了一个实际上与工作有关的问题,我想当我弄清楚如何做到这一点我会一路上学习。
我有一个充满JSON格式文件的目录。我已经将目录中的所有内容导入到列表中,并在列表中进行迭代以执行简单的打印,以验证我获取了数据。
我正在试图弄清楚如何在Python中实际使用给定的JSON对象。在javascript中,它就像
一样简单var x = {'asd':'bob'}
alert( x.asd ) //alerts 'bob'
访问对象上的各种属性是简单的点表示法。什么是Python的等价物?
所以这是我正在进行导入的代码。我想知道如何处理列表中存储的各个对象。
#! /usr/local/bin/python2.6
import os, json
#define path to reports
reportspath = "reports/"
# Gets all json files and imports them
dir = os.listdir(reportspath)
jsonfiles = []
for fname in dir:
with open(reportspath + fname,'r') as f:
jsonfiles.append( json.load(f) )
for i in jsonfiles:
print i #prints the contents of each file stored in jsonfiles
答案 0 :(得分:11)
json.load
当{'abc': 'def'}
包含JSON形式的Javascript对象(例如dict
)的文件是Python dictionary时(通常情况下被亲切地称为mydict['abc']
) (在这种情况下恰好与Javascript对象具有相同的文本表示)。
要访问特定项目,请使用索引myobj.abc
,而在Javascript中,您使用属性访问表示法mydict.keys()
。你在Python中使用属性访问表示法获得的是你可以在你的dict上调用的方法,例如['abc']
会给for k in mydict:
一个列表,其中包含字典中存在的所有键值(在这种情况下,只有一个,而且是一个字符串)。
字典功能非常丰富,有很多方法可以让你头脑旋转,并且对许多Python语言结构提供强大的支持(例如,你可以循环使用dict,k
和{{1将迭代地按顺序逐步执行字典的键。
答案 1 :(得分:-1)
要访问所有属性,请在附加列表之前尝试使用eval()语句。
像:
import os
#define path to reports
reportspath = "reports/"
# Gets all json files and imports them
dir = os.listdir(reportspath)
for fname in dir:
json = eval(open(fname).read())
# now, json is a normal python object
print json
# list all properties...
print dir(json)