2011-12-13 138 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":