.read()实际上做了什么,以及当没有使用.read()时会返回什么?

时间:2017-04-30 01:57:42

标签: python-3.x unicode byte

我如何使用它,但我注意到如果我不使用读取,那么它可以吐出不同的东西。

使用文本文件时可以吐出<_io.TextIOWrapper name='story.txt' mode='r' encoding='UTF-8'>

从urllib使用urlopen时,它也可以返回<http.client.HTTPResponse object at 0x76521550> 。 这些东西意味着什么以及.read()实际上做了什么?

1 个答案:

答案 0 :(得分:2)

这些是具有.read()方法的“类文件对象”,您将看到对象的repr(),这是一个描述字符串。当你调用.read()时,它会从对象中读取完整的内容,通常是字节或Unicode字符串。

一个小的自定义示例:

class Demo:
    def __repr__(self):
        return '<My Custom Description>'
    def read(self):
        return 'some stuff'

x = Demo()
print(x)
print(x.read())

输出:

<My Custom Description>
some stuff