Чтение определенной строки из файла .txt - PullRequest
0 голосов
/ 05 апреля 2019

Попытка прочитать одну строку из файла .txt, а затем написать оператор if на основе того, что находится в этой строке.Я написал то, что, по моему мнению, должно работать, выводит строку, но оператор if выводит «эта строка неверна»

import linecache

test = open('test.txt', 'w+')
test.write('Test\n')
test.write('True\n')
test.close()
read = linecache.getline('test.txt', 2)
print(read)
if read == 'True':
    print("The line is True")
else:
    print('The line is False')

Результат:

True

Theлиния ложная

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Вот краткое объяснение:

import linecache

test = open('test.txt', 'w+')
test.write('Test\n')
test.write('True\n')
test.close()
read = linecache.getline('test.txt', 2)
# At this moment read has 'True\n' 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

0 голосов
/ 05 апреля 2019

Проблема (как следует из первого комментария - перевод строки. В [2]: прочитайте [2]: 'True \ n'

. Чтобы исправить это, вы можете: if read.rstrip ()== 'True': print ("Строка - True") иначе: print ('The line is False')

Кроме того, я бы использовал linecache, только если у вас возникли проблемы с производительностью из-за большого файлаВ противном случае используйте open ('test.txt'). Readlines () [- 1]

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

...