Странно работает функция в Python
Пишу небольшую утилиту для изменения конфигов. Мне понадобилось получать значения из файла и я написал функцию которая это делает, но суть проблемы не в этом. При вызове функции в первые разы, все работает как надо, но потом, когда я её вызываю с точно такими же аргументами, она не возвращает ничего, а точнее "". Возможно ли такое:
def FindValue(file, var):
fileCont = file.readlines()
for line in fileCont:
if re.match(var, line):
splittedLine = re.split(" ", line)
out = ""
for word in splittedLine:
if word == var:
continue
else:
out +=" "
out += word
break
try:
out = re.sub("\n", " ", out)
except:
return ""
outList = []
for sym in out:
outList.append(sym)
outList.remove(" ")
out=""
for sym in outList:
out+=sym
print(out)
return out
if FindValue(self.asset, "ID") != " " and FindValue(self.asset, "ID") != "":
self.ID = FindValue(self.asset, "ID")
Я смотрел через debug, при проверке в if на выходе получается нужное значение, а при записи в переменную - "".
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
А вы уверены, что после f.readlines() вы можете повторно читать файл с начала?
Варианты тут такие по вашему коду:
id_val = FindValue(self.asset, "ID")
if id_val != " " and id_val != "":
self.ID = id_val
- Помещать значение
FindValue(self.asset, "ID")в переменную и дальше использовать её в if и присваивании. Но дальше у вас всё-равно вылезут проблемы, когда вы ещё раз обратитесь к этой функции. - Перед каждым чтением файла делать
f.seek(0)(если это именно файл, а не какой-то поток без возможности перемотки). - Сохранить куда-то содержимое файла и потом спокойно разбирать его содержимое столько раз, сколько нужно.
- Каждый раз перед чтением файла открывать его, читать, и потом закрывать.