我有一個參數是變量爲搜索功能的問題。如何將字符串變量傳遞給搜索功能?
這是我想要實現的:
我有一個文件充滿了值,我想檢查文件以確保在我繼續之前存在特定的匹配行。我要確保,如果一個有效<begSW=UNIQUE-DNS-NAME-HERE<>
存在並且可達行<endSW=UNIQUE-DNS-NAME-HERE<>
存在。直到我打電話if searchForString(searchString,fileLoc):
它總是返回false
,一切工作正常。如果我給你變「搜索字符串」的直接價值,並將它傳遞它的作品,所以我知道它一定有什麼用,我結合串的方式,但我似乎無法找出什麼我做錯了。
如果我檢查的數據「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並使用內置在庫中。 –