Чтение определенной строки из файла .txt

#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]

Чтобы получить последнюю строку