2010-10-20 4 views
2

Пытается следовать руководству здесь, но он не работает должным образом. Я уверен, что я что-то упустил.Команда Python не читает .txt-файл

http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files

file = open("C:/Test.txt", "r"); 
print file 
file.read() 
file.read() 
file.read() 
file.read() 
file.read() 
file.read() 

Используя метод Readline() дает те же результаты.

file.readline() 

Выход я получаю:

<open file 'C:/Test.txt', mode 'r' at 0x012A5A18> 

Любые предложения о том, что может быть не так?

+6

, как это, что не работает, как ожидалось? это ** точно так же, как и результат в учебнике! – SilentGhost

+0

Это не показывает, что говорит код, как сказано ниже. Мне нужно обернуть строку file.read() в инструкции печати, чтобы она отображалась на консоли. – 2010-10-20 13:01:09

ответ

4

Ничего страшного нет. file - объект, который вы печатаете.

Попробуйте это:

file = open('C:/Test.txt', 'r') 
for line in file.readlines(): print line, 
+0

Итак, я делал .ToString() для объекта, а не для содержимого объекта. Благодаря! :) При использовании этого цикла for для итерации содержимого файла, я получаю пробел между каждой строкой содержимого, это нормально? Строки в самом файле сложены без пустой строки между ними. – 2010-10-20 12:52:59

+1

Да, это нормально, потому что 'print' автоматически вставляет новую строку по умолчанию. Вы можете исправить это, добавив запятую после оператора 'print', такого как' print line ', который Фрэнк уже сделал :). –

+4

Почему бы не просто 'для строки в файле: ...'? – delnan

0

Вы должны сначала прочитать файл!

file = open("C:/Test.txt", "r") 
foo = file.read() 
print(foo) 

Вы можете написать также:

file = open("C:/Test.txt", "r").read() 
print(file) 
1

print file вызывает __repr__() функцию file объекта, который в данном случае определяется вернуть только то, что будет напечатано. Чтобы распечатать содержимое файла, вы должны указать read() содержимое в переменную (или передать ее непосредственно print). Кроме того, file является встроенным типом в Python, и используя file в качестве имени переменной, вы затеняете встроенный, что почти наверняка не то, что вы хотите. То, что вы хотите, это:

infile = open('C:/test.txt', 'r') 
print infile.read() 
infile.close() 

Или

infile = open('C:/test.txt', 'r') 
file_contents = infile.read() 
print file_contents 
infile.close() 
+0

Не знал, что файл является зарезервированным ключевым словом. Upboated! Спасибо за помощь. – 2010-10-20 12:55:51

+2

Это не зарезервированное ключевое слово как таковое, а встроенный тип. Разница заключается в том, что вы не можете указать переменную с тем же именем, что и ключевое слово, но вы _can_ присвоите ей то же имя, что и существующий (встроенный или нет) тип. Когда вы это сделаете, существующий тип становится недоступным. Python позволяет вам иногда делать сумасшедшие вещи;). Например: 'for = 10' недопустимо, потому что' for' - это ключевое слово, но 'int = 10' отлично действует. Это просто означает, что вы больше не можете использовать тип 'int' в этом контексте. –

+0

+1, спасибо за обмен знаниями. – 2010-10-20 13:01:49

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