Извлечение определенных переменных строки с помощью linecache
В настоящее время я использую модуль линейного кэша Python для извлечения определенных строк из данного текстового документа и создания нового файла с указанной строкой. Например, часть кода выглядит так:
cs = linecache.getline('variables.txt', 7)
cs_1 = open("lo_cs", "w")
cs_1.write(str(cs))
cs_1.close()
Проблема в том, что в файле variables.txt строка 7 задается как:
variable7 = 3423
например. Однако я хочу, чтобы новый файл lo_cs содержал только фактическое значение 3423, а не всю строку текста. Кроме того, я хочу вставить всю команду getline в цикл if, чтобы, если переменная 7 оставалась пустой, выполнялось другое действие. Есть ли способ использовать linecache для проверки пробела после 'variable7 = ', чтобы увидеть, есть ли там что-нибудь введенное, и если да, чтобы захватить только это конкретное значение или строку?
Я знаю (но на самом деле не понимаю), что скрипты bash, похоже, используют $ как своего рода заполнитель для вставки или вызова данного файла. Я думаю, что мне нужно реализовать что-то похожее на это...
Я думал о наличии инструкций в текстовом файле, указывающих, что значение должно быть указано в строке ниже - чтобы избежать выделения только сегментов линии - но это позволяет случайно войти в лишние разрывы, что испортит все последующие команды getline, в зависимости от того, какая строка должна быть выбрана.
Любая помощь в правильном направлении будет принята с благодарностью!
1 ответ
Вы можете использовать следующий метод, чтобы обернуть нужную вам функциональность:
def parseline(l):
sp = l.split('=')
return sp[0], int(sp[1]) if len(sp) > 1 else None
или если вам не нужно имя переменной:
def parseline(l):
sp = l.split('=')
return int(sp[1]) if len(sp) > 1 and sp[1].strip() != '' else None
а затем используйте:
csval = parseline(linecache.getline('variables.txt', 7))
Позже вы можете разместить условия на csval, чтобы увидеть, если это None
и, если это так, предпримите другое действие.