我正在研究一個掃描程序,它檢查文件傳輸的進度,該掃描程序在IP地址的醃製列表中進行操作。當一個文件完成時,我希望IP地址從IP的清單列表中移除並移動到單獨的清單中,「完成」。使用IP地址作爲參數的函數調用
開始:
servers = {"10.10.10.1": "", "10.10.10.2": "", "10.10.10.3": ""}
skeys = servers.keys()
complete = []
def donewith(server):
if server in skeys:
complete.append("{0}".format(server))
servers.pop("{0}".format(server))
logging.info('Moved {0} to Complete list.'.format(server))
else:
logging.error('Unable to move \'{0}\' to Complete list.'.format(server))
期望的結果:
donewith(10.10.10.1)
servers = {"10.10.10.2": "", "10.10.10.3": ""}
complete = ["10.10.10.1"]
這是我真正得到。
donewith(10.10.10.1)
File "<stdin>", line 1
donewith(10.10.10.1)
^
SyntaxError: invalid syntax
或者調用帶引號的功能產生TypeError requiring an integer.
不太知道如何解決這個問題,因爲它似乎是這樣一個簡單的問題
制定的報價方案:
def check(server):
#print "Checking {0}".format(server)
logging.info('Fetching {0}.'.format(server))
response = urllib2.urlopen("http://"+server+"/avicapture.html")
tall = response.read() # puts the data into a string
html = tall.rstrip()
match = re.search('.*In Progress \((.*)%\).*', html)
if match:
temp = match.group(1)
results = temp
servers[server] = temp
if int(temp) >= 98 and int(temp) <= 99:
abort(server)
alertmail(temp, server)
donewith(server)
logging.info('{0} completed.'.format(server))
return str(temp)
else:
logging.error('Unable to find progress for file on {0}.'.format(server))
return None
這函數調用donewith()
函數,如果該函數具有如下引號,則該函數不起作用:donewith("server")
。
實施例:
def check(server):
donewith("server")
def donewith(server)
do_things.
check(server)
從而造成..
check(10.10.10.3)
^
SyntaxError: invalid syntax
與第三組數字零
始終...
你要通過值字符串僅作爲您的報價提。你會提供「TypeError:需要一個整數」的回溯嗎? – Nilesh
請提供從tracback中提供的2-3行全部回溯。 – Nilesh