文件夹处理的查找操作

img


请问这个错误类型是什么意思?要怎么修改内容 不是很懂关于这里?

注意:

  1. 字符串后4位应为[-4:]
  2. with段缩进调整
  3. 搜索strkey缩进调整
  4. 函数应返回filepathlist
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所以在循环结束后也没被声明。