【问题标题】:Python: For loop skip in If [closed]Python:If中的For循环跳过[关闭]
【发布时间】:2011-12-13 22:55:53
【问题描述】:

为什么会跳过“old_langpacks.append(act_item)”行? 当我只使用 for 循环而不使用 if 时,它可以工作。

    if act_file == "Languages.csv":
        temp_list = open(act_file,"r")
        for act_item in temp_list:
            old_langpacks.append(act_item)
    else:
        pass

【问题讨论】:

  • Err... 可能是因为 act_file 不是“Languages.csv”?你试过调试吗?
  • 看起来条件不成立。为了方便调试,在两个分支上打印语句,这样你就可以看到哪个被占用了。
  • 打印 act_file, "Languages.csv" 以检查它们是否真的相同。

标签: python loops if-statement for-loop skip


【解决方案1】:

它不工作的原因是因为你的 if 条件评估为假。

除了 Mark Byers 的建议之外,我还想到了一个想法:

act_file 是否可能是一个文件对象,而不是代表文件名的字符串?

act_file 是如何创建的?

如果您通过以下方式获得它:

act_file = open("Languages.csv")

那么你将无法按照你写的方式检查它的名称,因为 act_file 确实是一个文件对象。

如果 act_file 是一个文件对象,那么编写 if 语句的正确方法是:

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

【讨论】:

    【解决方案2】:

    您的if 中的条件可能会导致False,即使您认为它应该true

    这可能是由于区分大小写 - 如果您在 Windows 上,文件名将适用于任何大小写,但如果 @ 中的任何字母大小写,if 中的字符串比较不会比较 true 987654325@ 变量与它们在Languages.csv 字符串中的方式不同。

    要解决这个问题,我建议您将 if 行更改为:

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

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多