调用内置函数的结果open
是一个包装文件的 Python 对象,而不仅仅是文件的内容。这就是您指定的名称text1
。
文件对象的read
方法返回文件中一些字节数的字符串。如果您只是调用text1.read()
,那将返回一个包含文件中所有字符的字符串对象。
您可以直接从 read 语句中打印文件的内容,如下所示:
print(text1.read()
或者,如果您想对文件内容做任何其他事情,如果将它们保存到局部变量中,然后打印它们,您的状态会更好:
text_from_file = text1.read()
print(text_from_file)
这是因为text1.read()
将读取到文件的末尾,之后后续的调用read()
将只返回空字符串,除非您告诉文件对象从文件的开头重新开始(通过调用text1.seek(0)
)。
您在第二个示例中所做的调用print(text1)
打印名为 text1 的对象的表示。在 Python 2 中,它看起来像这样:
Python 2.7.4 (v2.7.4:026ee0057e2d, Apr 6 2013, 10:15:50)
>>> foo = open('.bash_history', 'r')
>>> print(foo)
<open file '.bash_history', mode 'r' at 0xbb440>
>>>
在 Python3 中,对象不同,所以表示也不同:
Python 3.3.1 (v3.3.1:d9893d13c628, Apr 6 2013, 10:32:10)
>>> foo = open('.bash_history', 'r')
>>> print(foo)
<_io.TextIOWrapper name='.bash_history' mode='r' encoding='UTF-8'>
>>>
无论哪种方式,您都要求它打印 Python 对象的表示,而不是对象为您提供 Python 访问权限的文件的内容。