那麼。我想到了。事實證明,如果它不應該完全運行,它不應該匹配,這是因爲_s3_bucket.list(prefix=basename)
= []。我對Python的信心已經恢復。 :) 謝謝你們!Python if/else不工作...不滿足條件,但其他不執行
爲什麼此代碼片段無法打印「不匹配」? 當正則表達式匹配時,它成功地打印「匹配」,但當它不成功時,它不執行else。 print type(match)
返回<type 'list'>
。
object_regex = re.compile('%s\.(\d+)\.%s' % \
(re.escape('.'.join(basename.split('.')[:-2])),
re.escape(basename.split('.')[-1])))
for obj in _s3_bucket.list(prefix=basename):
match = object_regex.findall(obj.name)
print match //prints nothing when nothing is found. not even []
if match:
print "matches"
else:
print "doesnt match"
我也試過
if not match:
print "doesnt match"
else:
print "matches"
,它永遠不會執行如果任。
打印輸出(上傳至S3打印時被調用的函數):
UPLOAD TO S3 /fonts/HelveticaNeueLTPro-Lt.1351206175.otf
[u'1351206175']
matches
UPLOAD TO S3 /fonts/HelveticaNeueLTPro-Bd.1351206175.otf
[u'1351206175']
matches
UPLOAD TO S3 /css/common.1357015625.css <-- what is going on here?
UPLOAD TO S3 /css/landing-style.1356896077.css
[u'1356896077']
matches
當我print type(match)
代替print match
我每一次,這使我相信那場比賽的確是一個空列表獲取<type 'list'>
。但空列表應該這樣做...
>>> match=[]
>>> if match:
... print "ASDF"
...
>>> if not match:
... print "asdf"
...
asdf
請打印一份obj的手裏的素材。這將幫助我們幫助你... – rh0dium
同意@Thomas和Ignacio。你告訴我們它不執行其他的一面。你確定它「不匹配」嗎? – rh0dium
其含義是它永遠不會執行if _block_(而不是_else_塊)而不是整個語句。如果我正確地閱讀這個問題,'if match'總是評估爲真。 –