2014-01-20 4 views
0

Я пытаюсь прочитать файл, чтобы проверить, если содержание является 0 или 1 со следующим кодом:Python чтения(), если заявление

#!/usr/bin/env python 

file = open('test', 'r') 

read=file.read() 

if read == 2: 
     print "do something" 
else: print "do something else" 

Но выход файла всегда «сделать что-то else ", даже если файл содержит 2.

Кто-нибудь знает, что я делаю неправильно?

Заранее благодарен!

+2

Вы уверены, что 'read' является int, а не строкой? Попробуйте 'read = int (file.read(). Strip())'. – mdml

ответ

1

file.read() возвращает строку. Если есть только 2 в файле вы должны преобразовать его в int:

read = int(file.read()) 

Или сделать проверку строки вместо:

if read == '2': 
1

вы сравниваете линию вы читали из файла (т.е. is, строка) в целое число. Попробуйте следующее:

if int(read.strip()) == 2: 
    print "Hello!" 
2

Прежде всего, вы сравниваете строку с Int read == 2. Это всегда будет возвращать ложь. Кроме того, учитывайте возможные окончания линии и наблюдайте за отступом. Код должен быть таким:

file = open('test', 'r') 

read=file.read().rstrip('\n') # removes possible line endings 

if read == '2': 
    print "do something" 
else: 
    print "do something else" 

Надеюсь, это поможет!

+1

+1 Это единственный ответ, который не вызовет необработанное исключение, если содержимое файла не является числом – mhlester

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