爲什麼行「old_langpacks.append(act_item)」被跳過? 當我只使用for循環,沒有if時,它就起作用。Python:For循環跳過如果
if act_file == "Languages.csv":
temp_list = open(act_file,"r")
for act_item in temp_list:
old_langpacks.append(act_item)
else:
pass
爲什麼行「old_langpacks.append(act_item)」被跳過? 當我只使用for循環,沒有if時,它就起作用。Python:For循環跳過如果
if act_file == "Languages.csv":
temp_list = open(act_file,"r")
for act_item in temp_list:
old_langpacks.append(act_item)
else:
pass
可能在你if
的條件導致False
,即使你認爲它應該是true
。
這可能是由於區分大小寫 - 如果你是在Windows上,文件名稱將與任何套管工作,但在你的if
字符串比較不會比真正的,有信在act_file
變量的情況下不同於它們在Languages.csv
字符串中的方式。
若要解決此我建議你改變if
行:
if act_file.lower() == "languages.csv":
它不工作的原因是因爲你如果條件評估爲假。
除了什麼馬克拜爾斯提出一個想法浮現在腦海:
難道act_file
是一個文件對象,而不是它代表的文件名的字符串?
act_file是如何創建的?
如果通過類似的東西得到它:
act_file = open("Languages.csv")
,那麼你將無法檢查它的名字你寫的方式,因爲act_file確實是一個文件對象。
如果act_file是一個文件對象,寫你的if語句是正確的做法:
if act_file.name == "Languages.csv":
嗯...也許是因爲act_file不是 「Languages.csv」?你嘗試過調試嗎? – 2011-12-13 22:57:57