12

次のコードがあります。

def search():
    os.chdir("C:/Users/Luke/Desktop/MyFiles")
    files = os.listdir(".")
    os.mkdir("C:/Users/Luke/Desktop/FilesWithString")
    string = input("Please enter the website your are looking for (in lower case):")
    for x in files:
        inputFile = open(x, "r")
        try:
            content = inputFile.read().lower
        except UnicodeDecodeError:
            continue
        inputFile.close()
        if string in content:
            shutil.copy(x, "C:/Users/Luke/Desktop/FilesWithString")

常にこのエラーが発生します:

line 80, in search
    if string in content:
TypeError: argument of type 'builtin_function_or_method' is not iterable

誰かが理由を明らかにすることができますか?

より

4

2 に答える 2

44

行を変更する

content = inputFile.read().lower

content = inputFile.read().lower()

元の行は、関数を呼び出してstr.lower戻り値を割り当てるのではなく、変数コンテンツに組み込み関数を割り当てます。これは間違いなく反復可能ではありません。

于 2013-01-19T13:18:47.130 に答える
4

あなたが使用している

content = inputFile.read().lower

それ以外の

content = inputFile.read().lower()

つまり、lower からの戻り値ではなく、lower 関数を取得しています。

実際に得られるものは次のとおりです。

>>> 
>>> for x in "HELLO".lower:
...     print x
... 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'builtin_function_or_method' object is not iterable
于 2013-01-19T13:19:32.593 に答える