注意:
import os
def findfiles(path, strkey):
filepathlist = []
txt = ""
dir_files = os.walk(path)
for toppath, subpath, fileslist in dir_files:
for file in fileslist:
if file[-4:] == ".txt":
file_path = os.path.join(toppath, file)
with open(file_path, "r", encoding="utf-8") as f:
txt = f.read()
if strkey in txt:
filepathlist.append(file_path)
return filepathlist
path = "/Users/apple/Desktop/python/python文件练习"
strkey = "沧海"
fileslist = findfiles(path, strkey)
print(fileslist)
打开的路径不是有效的
编译的时候,因为前面是if,说明有可能这个file_path不会被定义。你后面在调用的时候,需要这个file_path被定义。但是当这个开始编译的时候,它会去前面找是否被定义,因为在if里面,所以报错了
有了if,就相当于说这个file_path被没被定义是不知道的,编译器不允许这种不知道
或者说,你这个是因为在函数里面,既调用又修改了全局变量。你在那个def下面加一个global file_path试试
代码第12行中的open()中的参数 file_path 没定义,也就是上面一段(第7-10行)for循环没有遍历到.txt文件, file_path所以在循环结束后也没被声明。