首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python TypeError:'TagList‘对象不可迭代

Python TypeError:'TagList‘对象不可迭代
EN

Stack Overflow用户
提问于 2016-06-29 03:55:22
回答 1查看 909关注 0票数 2

这种事时时刻刻都会发生。函数返回一个我无法读取的对象。在此:

代码语言:javascript
复制
    discoverer = GstPbutils.Discoverer()
    discoverer.connect('discovered', on_discovered)
    info = discoverer.discover_uri(self.loaded_file)
    print(vinfo.get_tags())

返回以下内容:

代码语言:javascript
复制
<Gst.TagList object at 0x7f00a360c0a8 (GstTagList at 0x7f00880024a0)>

但当我尝试这样做时:

代码语言:javascript
复制
    tags = vinfo.get_tags()
    for tag in tags:
        print (tag)

我明白了:

代码语言:javascript
复制
TypeError: 'TagList' object is not iterable

但当我读到这个数据结构的文档的时候,我似乎明白它是.名单?除了告诉我如何获取标签之外,还能有人告诉我如何阅读那些文档吗?另外,我是否缺少一些内省方法和工具,可以用来发现我遇到的对象是什么,以及它们是如何工作的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-30 10:35:26

这都是假设的,因为我从未在GStreamer中使用过python:

根据文件-是的,据说它的清单..。但这可以表示为内部结构。记住蟒蛇绑定只是..。绑定-所有的工作方式(如果不是以更好的方式实现)类似于C。你在C使用标记来迭代它们。做什么..。但是不要问我是怎么发现的--你必须环顾一下文档,检查所有可用的函数。

你必须明智地考虑一下你所使用的对象是如何实现的--同时你也知道它代表了什么。我的意思是-当每个标签有不同的类型时,这是标签的列表-一个是字符串,另一个是int等等。你不可能轻易地重复这一点。

所以我想你有两种选择--根据你想对标签做什么..。

1,序列化为string并使用该字符串:

我不确定,但是在C中有字符串,它可以做与python中的字符串相同的事情--所以,如果您只对标签名感兴趣,那么就试试吧。或者它回来的任何东西。

2 .使用内置前程及其回调定义:

代码语言:javascript
复制
 tags = vinfo.get_tags()
 tags.foreach(my_callback, self)

在你的回访中:

代码语言:javascript
复制
 def my_callback(list, tag, user_data):
   print(tag)
   #do whatever you want with list
   #not sure how to use casting in python:
   YourClass ptr = user_data
   ptr.your_method(whatever, tag);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38090102

复制
相关文章

相似问题

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