#python #readline
#python #readline
Вопрос:
Попытка прочитать одну строку из файла .txt, затем напишите оператор if на основе того, что находится в этой строке. Я написал то, что, по моему мнению, должно сработать, оно выводит строку, но оператор if выводит «эта строка является ложной»
import linecache
test = open('test.txt', 'w ')
test.write('Testn')
test.write('Truen')
test.close()
read = linecache.getline('test.txt', 2)
print(read)
if read == 'True':
print("The line is True")
else:
print('The line is False')
Результат:
Верно
Строка является ложной
Комментарии:
1. read == ‘Truen’ ?
2. Вы уверены, что значение равно
True
? Что вы записываете в файл? (Truen
)3. @BornTbeWasted Основываясь на документах linecache , я бы сказал, что вы определили проблему. Вы должны опубликовать это как ответ.
4. @BornTbeWasted это сработало благодаря изменению read == ‘True n’
5. Лично я думаю,
read.strip() == 'True'
было бы лучше, но либо работает.
Ответ №1:
Вот краткое объяснение :
import linecache
test = open('test.txt', 'w ')
test.write('Testn')
test.write('Truen')
test.close()
read = linecache.getline('test.txt', 2)
# At this moment read has 'Truen' as value
print(read)
# However print formats the output with the special character. Hence your print
will have a line return try print(read read) to see
if read == 'True': # This evaluate to False
print("The line is True")
else: #Well this is an else, you should avoid doing so if you have a binary condition. Writing elif read == 'False' is not too bad
print('The line is False')
Кроме того, мой ответ состоял в том, чтобы указать, почему он не вел себя в соответствии с тем, что вы подозревали. Пожалуйста, смотрите документацию по str.strip() :https://docs.python.org/2/library/stdtypes.html#str.strip
Ответ №2:
Проблема (как указано в первом комментарии, заключается в новой строке. В [2]: считывание [2]: ‘True n’
Чтобы исправить это, вы могли бы либо: if read.rstrip() == ‘True’: print(«Строка истинна»), либо: print(‘Строка ложна’)
Кроме того, я бы использовал linecache только в том случае, если у вас возникают проблемы с производительностью из-за большого файла. В противном случае используйте open(‘test.txt ‘).readlines()[-1]
Чтобы получить последнюю строку