如何简单地获得输出信息?

时间:2014-08-21 01:48:06

标签: python-3.x

控制台中的信息输出采用字符串形式,有时我们希望从中获取一些有用的信息。

>>> open('out.txt', 'w')
<_io.TextIOWrapper name='out.txt' mode='w' encoding='cp936'>
>>> open('out.txt', 'w').name
'out.txt'
>>> open('out.txt', 'w').mode
'w'
>>> open('out.txt', 'w').encoding
'cp936'
>>> repr(open('out.txt', 'w')).split(" ")[0][1:]
'_io.TextIOWrapper'

我从repr(open('out.txt', 'w')).split(" ")[0][1:]获得了部分信息,是否有更简单的方法可以获得与'_io.TextIOWrapper'相同的输出信息?

3 个答案:

答案 0 :(得分:2)

回答你究竟想要做什么的问题,但对于Python 3,你会使用:

>>> '{0.__module__}.{0.__qualname__}'.format(type(open('out.txt', 'w')))
'_io.TextIOWrapper'

请注意,在Python 3.3之前,__qualname__不存在。

__qualname____name__之间的区别在于,如果某些内容嵌套在类或函数中,__qualname__将包含有关封闭范围的信息。

为包含模块名称和对象类型的内容派生名称可能很棘手,因为上面的规则并不总是适用于某些事情。因此,作为获取对象完整名称的一般机制,这还不够。

答案 1 :(得分:1)

是文件对象的实例,因此您可以获取其__class__ attr:

>>> open('out.txt', 'w').__class__
 _io.TextIOWrapper

答案 2 :(得分:0)

您可以将此类型作为字符串获取:

>>> type(open('out.txt', 'w')).__name__
'TextIOWrapper'