首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输出从外部函数检索的Json对象的特定值

输出从外部函数检索的Json对象的特定值
EN

Stack Overflow用户
提问于 2014-03-11 13:49:35
回答 1查看 343关注 0票数 0

我很难得到合适的产出值

代码语言:javascript
复制
print metadata["File:FileSize"]

它给了我list indices must be a integer, not str错误。我以为json.loads会把字典还给我。

变量metadata是这样从类中的exiftool中检索的:

代码语言:javascript
复制
def get_metadata(self, *filenames):
    return json.loads(self.execute("-G", "-j", "-n", *filenames))

在主程序流程中,我这样做:

代码语言:javascript
复制
metadata = exif.get_metadata(fileName)
print metadata
print metadata["File:FileSize"]

有人能帮我找出我做错了什么吗?

下面是一个原始exiftool查询的示例:

代码语言:javascript
复制
[{
  "SourceFile": "/media/mango/MF-HDD-277/01_audio/Computer Arts royalty-free audio samples/Disc 191 - soundsnap/ComputerArtsDisc191_SoundSnapSamples_088_Bend03.wav",
  "ExifTool:ExifToolVersion": 9.13,
  "File:FileName": "ComputerArtsDisc191_SoundSnapSamples_088_Bend03.wav",
  "File:Directory": "/media/mango/MF-HDD-277/01_audio/Computer Arts royalty-free audio samples/Disc 191 - soundsnap",
  "File:FileSize": 146948,
  "File:FileModifyDate": "2010:10:24 11:17:20-04:00",
  "File:FileAccessDate": "2014:01:29 15:58:48-05:00",
  "File:FileInodeChangeDate": "2014:01:21 13:28:00-05:00",
  "File:FilePermissions": 711,
  "File:FileType": "WAV",
  "File:MIMEType": "audio/x-wav",
  "RIFF:Encoding": 1,
  "RIFF:NumChannels": 2,
  "RIFF:SampleRate": 44100,
  "RIFF:AvgBytesPerSec": 176400,
  "RIFF:BitsPerSample": 16,
  "Composite:Duration": 0.833038548752834
}]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-11 14:19:30

原始查询在数组中返回一个javascript对象。当您用json.loads解析JSON时,您会在一个列表中得到这个数据集。因此,要访问属性,请执行metadata[0]["File:FileSize"]

或者更改get_metadata方法以直接返回dict。

代码语言:javascript
复制
def get_metadata(self, *filenames):
    return json.loads(self.execute("-G", "-j", "-n", *filenames))[0]

不,json.loads不仅返回字典。在他的评论中链接到的表格 Tim指定了JSON到Python的转换。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22327679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档