2014-02-01 5 views
0

Я изучаю питон после этой документации:.read() не читает мой файл

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

Вы должны напечатать 'f.read()' not 'f'. –

ответ

2

Вы читаете файл только в порядке, но печатаете файл file object, а не содержимое файла.

Использование 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(), если вы явно не распечатали его.

+0

как всегда, отличный подробный ответ – tayfun

0

попробовать это:

f = open('C:\Users\PC\Desktop\plik.txt', 'r+b') 
print f.read() 

, который будет печатать то, что вы читали из F, в то время как print f будет печатать информацию об объекте f, объект файла.

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

Если вы наберете тот же код в интерпретатор питона

>>> 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() после его ввода.

Смежные вопросы