У меня возникли проблемы с передачей строковой переменной в функцию поиска.Как передать переменную строки в функцию поиска?
Вот что я пытаюсь выполнить:
У меня есть файл, полный значений, и я хочу проверить файл, чтобы убедиться, что определенная строка соответствия существует до того, как я начну. Я хочу убедиться, что существует строка <endSW=UNIQUE-DNS-NAME-HERE<>
, если существует действительный <begSW=UNIQUE-DNS-NAME-HERE<>
и доступен.
Все работает нормально, пока я не позвоню if searchForString(searchString,fileLoc):
, который всегда возвращает false. Если я присваиваю переменной «searchString» прямое значение и передаю ее, она будет работать, поэтому я знаю, что это должно быть что-то с моим сочетанием строк, но я не могу понять, что я делаю неправильно.
Если я анализирую данные, что «searchForString» использует я вижу, что, как представляется, действительные значения:
values in fileLines list:
['<begSW=UNIQUE-DNS-NAME-HERE<>', ' <begPortType=UNIQUE-PORT-HERE<>', ' <portNumbers=80,443,22<>', ' <endPortType=UNIQUE-PORT-HERE<>', '<endSW=UNIQUE-DNS-NAME-HERE<>']
value of searchVar:
<endSW=UNIQUE-DNS-NAME-HERE<>
Пример записи в файле:
<begSW=UNIQUE-DNS-NAME-HERE<>
<begPortType=UNIQUE-PORT-HERE<>
<portNumbers=80,443,22<>
<endPortType=UNIQUE-PORT-HERE<>
<endSW=UNIQUE-DNS-NAME-HERE<>
Здесь код, о котором идет речь:
def searchForString(searchVar,readFile):
with open(readFile) as findMe:
fileLines = findMe.read().splitlines()
print fileLines
print searchVar
if searchVar in fileLines:
return True
return False
findMe.close()
fileLoc = '/dir/folder/file'
fileLoc.lstrip()
fileLoc.rstrip()
with open(fileLoc,'r') as switchFile:
for line in switchFile:
#declare all the vars we need
lineDelimiter = '#'
endLine = '<>\n'
begSWLine= '<begSW='
endSWLine = '<endSW='
begPortType = '<begPortType='
endPortType = '<endPortType='
portNumList = '<portNumbers='
#skip over commented lines -(REMOVE THIS)
if line.startswith(lineDelimiter):
pass
#checks the file for a valid switch name
#checks to see if the host is up and reachable
#checks to see if there is a file input is valid
if line.startswith(begSWLine):
#extract switch name from file
switchName = line[7:-3]
#check to make sure switch is up
if pingCheck(switchName):
print 'Ping success. Host is reachable.'
searchString = endSWLine+switchName+'<>'
**#THIS PART IS SUCKING, WORKS WITH DIRECT STRING PASS
#WONT WORK WITH A VARIABLE**
if searchForString(searchString,fileLoc):
print 'found!'
else:
print 'not found'
Любые советы или рекомендации будут очень полезными.
После некоторого большего чтения я решил изменить входной текстовый файл на XML и использовать встроенные библиотеки. –