2011-12-13 140 views
0

爲什麼行「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 
+7

嗯...也許是因爲act_file不是 「Languages.csv」?你嘗試過調試嗎? – 2011-12-13 22:57:57

回答

0

可能在你if的條件導致False,即使你認爲它應該true

這可能是由於區分大小寫 - 如果你是在Windows上,文件名稱將與任何套管工作,但在你的if字符串比較不會比真正的,有信在act_file變量的情況下不同於它們在Languages.csv字符串中的方式。

若要解決此我建議你改變if行:

if act_file.lower() == "languages.csv": 
2

它不工作的原因是因爲你如果條件評估爲假。

除了什麼馬克拜爾斯提出一個想法浮現在腦海:

難道act_file是一個文件對象,而不是它代表的文件名的字符串?

act_file是如何創建的?

如果通過類似的東西得到它:

act_file = open("Languages.csv") 

,那麼你將無法檢查它的名字你寫的方式,因爲act_file確實是一個文件對象。

如果act_file是一個文件對象,寫你的if語句是正確的做法:

if act_file.name == "Languages.csv":