控制台中的信息输出采用字符串形式,有时我们希望从中获取一些有用的信息。
>>> 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'相同的输出信息?
答案 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'