我正在学习python遵循此文档:
http://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects
我正在尝试读取名为“plik.txt”的文件。它由两行短文组成,如:
long time ago
blah blah...
所以我使用这段代码:
f = open('C:\Users\PC\Desktop\plik.txt', 'r+b')
print f
f.read()
然而,我得到的只是消息
<open file 'C:\Users\PC\Desktop\plik.txt', mode 'r+b' at 0x053EC7B0>
我正在使用树冠。
我的程序在我的文件中显示的内容(就像在说明中一样)是什么?
答案 0 :(得分:2)
您正在阅读该文件,但正在打印文件对象,而不是文件内容。
改为使用print f.read()
:
f = open('C:\Users\PC\Desktop\plik.txt', 'r+b')
print f.read()
.read()
方法返回文件内容,但您完全忽略它们。
Python教程还假设您正在交互式Python解释器中运行代码,该解释器会自动回显任何不会导致None
的表达式的返回值。因此,调用f.read()
会为您所做的一切提供自动print repr(returnvalue)
。
您必须直接运行代码,而不是在没有自动回显的交互式解释器中,除非您明确打印,否则您无法看到f.read()
返回的内容。
答案 1 :(得分:0)
试试这个:
f = open('C:\Users\PC\Desktop\plik.txt', 'r+b')
print f.read()
将打印您从f中读取的内容,而print f
将打印有关对象f
的文件对象的信息。
答案 2 :(得分:0)
open
返回文件句柄。您将此句柄分配给f
。
print f
打印句柄(文件名,模式等)
您应该打印f.read()
的结果。
如果将以下代码放在文件中并使用python filename.py
运行它或者在python解释器中输入代码,则会有所不同:
使用以下代码
运行python filename.py
f = open('C:\Users\PC\Desktop\plik.txt', 'r+b')
print f
f.read()
只会打印print f
如果在python解释器中键入相同的代码
>>> f = open('C:\Users\PC\Desktop\plik.txt', 'r+b')
>>> print f
<open file 'C:\Users\PC\Desktop\plik.txt', mode 'r+b' at 0xb7382020>
>>> f.read()
'the content of file C:\Users\PC\Desktop\plik.txt ...'
如果输入后会打印结果f.read()。