0

「old_langpacks.append(act_item)」という行がスキップされるのはなぜですか? if なしで 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
4

2 に答える 2

2

機能していない理由は、if 条件が false と評価されているためです。

Mark Byers が示唆したことに加えて、1 つの考えが頭に浮かびました。

act_fileファイルの名前を表す文字列ではなく、ファイル オブジェクトである可能性はありますか?

act_file はどのように作成されますか?

次のような方法で取得した場合:

act_file = open("Languages.csv")

act_file は実際にはファイルオブジェクトであるため、記述した方法でその名前を確認することはできません。

act_file がファイル オブジェクトの場合、if ステートメントを記述する正しい方法は次のようになります。

if act_file.name == "Languages.csv":
于 2011-12-13T23:06:38.617 に答える
0

おそらく、あなたがそうあるべきだと思っていても、あなたの状態ifは結果的に.Falsetrue

これは、大文字と小文字の区別が原因である可能性があります。Windows を使用している場合、ファイル名は大文字と小文字を区別しても機能しますが、変数内の文字の大文字と小文字が異なる場合、文字列比較はif真とは比較されません。文字列act_fileLanguages.csv

これを回避するには、if行を次のように変更することをお勧めします。

if act_file.lower() == "languages.csv":
于 2011-12-13T23:00:23.983 に答える