3

我正在尝试从文件中读取文本并显示它,但它不起作用。我得到一个空白结果,或者我得到

<_io.TextIOWrapper name='/Users/student/Desktop/Harry.txt' mode='r' encoding='US-ASCII'>

代码

text1 = open('/Users/student/Desktop/Harry.txt', 'r')
text1.read()

我试过了

text1 = open('/Users/student/Desktop/Harry.txt', 'r')
text1.read()
print(text1) 
4

4 回答 4

5

将返回值text.read()赋给变量并打印

text1 = open('/Users/student/Desktop/Harry.txt', 'r')
x = text1.read()
print(x) 
于 2013-06-26T02:51:52.877 回答
2

did you try this?

text1 = open('/Users/student/Desktop/Harry.txt', 'r')
data  = text1.read()
print data
text1.close()
于 2013-06-26T02:52:28.893 回答
1

调用内置函数的结果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 访问权限的文件的内容。

于 2013-06-26T03:01:05.630 回答
0

try print text1.read() to get it to work

于 2013-06-26T02:52:08.890 回答