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()

即你得到的函数更低,而不是更低的返回值。

实际上你得到的是:

>>> 
>>> 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 回答