我有以下代码:
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
有人可以解释为什么会这样做。
thans
答案 0 :(得分:28)
更改行
content = inputFile.read().lower
到
content = inputFile.read().lower()
您的原始行将内置函数分配给您的变量内容,而不是调用函数str.lower
并指定绝对不可迭代的返回值。
答案 1 :(得分: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