2013-06-08 2 views
2

Я работал над дополнительными вопросами для http://learnpythonthehardway.com. После написания программы, которая открывала и читала файл, я попытался изменить его, чтобы добавить режим в команду open. Но всякий раз, когда я это делаю, он возвращает None, а также содержимое файла.Программа продолжает возвращать Нет, хотя у меня нет определения.

Вот код:

from sys import argv 

script, filename = argv 

txt = open(filename, "r") 

print "Here's your file %r:" % filename 
print txt.read() 
print txt.close() 

print "Type the filename again:" 
file_again = raw_input("> ") 

txt_again = open(file_again, "r") 

print txt_again.read() 
print txt_again.close() 

Вот что он печатает:

$ python ex15.py filey.txt 
Here's your file 'filey.txt': 
whatever 
None 
Type the filename again: 
> filey.txt 
whatever 
None 

слеши между линиями.

Я нашел вопрос, объясняющий, что, когда вы не укажете, python автоматически возвращает None. Однако, когда я пытаюсь использовать команду return вместо этого или в дополнение к печати, для этого требуется определение. Когда я добавляю определение, я не могу заставить остальную часть кода работать. Как я могу избавиться от этого None?

Я также был бы признателен, если бы кто-нибудь мог объяснить, почему он появляется в режиме «r», но не без него.

ответ

6

Каждая функция возвращает значение в Python. Вы распечатать результат txt.close(), который бывает None:

print txt.close() 

Просто удалите print заявление, и вы должны быть в порядке:

txt.close() 
+0

Спасибо, что зафиксировал его полностью. – Danny

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