fightclub 发表于 2022-9-17 22:56:08

i[2]以及i[0]是什么?

def search_files(key,detail):
    all_files = os.walk(os.getcwd())
    txt_files = []

    for i in all_files:
      for each_file in i:
            if os.path.splitext(each_file) == 'txt':
                each_file = os.path.join(i,each_file)
                txt_files.append(each_file)
      foe each_txt_file in txt_files:
            key_dict = search_in_file(each_txt_file,key)
            if key_dict:
            print('======================================')
            print('在文件【%s】中找到关键字【%s】'%(each_txt_file,key))
            if detail in ['Yes','YES','yes']:
                  print_pos(key_dict)

如题

jackz007 发表于 2022-9-17 23:18:32

本帖最后由 jackz007 于 2022-9-17 23:27 编辑

      os . walk() 会多次返回搜索结果,每次只返回一个子目录的搜索结果,每次返回的结果是一个由 3 个元素构成的元组 (root , dirs , files),其中,root 是一个字符串,指示的是当前搜索路径,比如,"C:\Windows\System32",dirs 是一个由 "C:\Windows\System32" 内所有子目录名构成的列表,files 是一个由 "C:\Windows\System32" 内所有普通文件名构成的列表。
    所以,
all_files = os.walk(os.getcwd())      # 这将会从当前目录开始,递归遍历目录内所有的子目录,并给出每个子目录的路径及其内所有的子目录列表和普通文件列表
    for i in all_files:      # i 对应于 root,i 对应于 dirs,i 对应于 files

Twilight6 发表于 2022-9-18 10:53:35



os.walk 方法返回的是一个三元组生成器

即该生成器中元素均为三元组结构:(路径,该路径下包含子目录,   该路径下包含文件)


所以第一个 for 循环,是将每个三元组取出,赋值给 i

所以对于 i 来说,就是此时三元组中的 路径,i 表示此路径下保护的子目录,i 即包含的文件

页: [1]
查看完整版本: i[2]以及i[0]是什么?