baiyuzhu1016 发表于 2020-4-13 16:05:10

第30讲:用户输入文件名以及开始搜索的路径答案,请看看我错哪了

import os
def file_search(file_path,taget_file):
    tree=list(os.walk(file_path))
    length=len(tree)
#(路径, [包含目录], [包含文件])
    for j in range(length+1):
      if taget_file in tree:
            print(os.path.dirname(taget_file))
file_path=input("请输入待查找的初始目录:")
taget_file=input("请输入需要查找的目标文件:")
file_search(file_path,taget_file)

F:\Anaconda\python.exe F:/小甲鱼0基础python入门/第30讲文件系统:介绍一个高大上的东西/file_search.py
请输入待查找的初始目录:D:\Google
请输入需要查找的目标文件:12月2日不达标网站和11月28日不达标网站对比说明.xlsx

Traceback (most recent call last):
File "F:/小甲鱼0基础python入门/第30讲文件系统:介绍一个高大上的东西/file_search.py", line 11, in <module>
    file_search(file_path,taget_file)
File "F:/小甲鱼0基础python入门/第30讲文件系统:介绍一个高大上的东西/file_search.py", line 7, in file_search
    if taget_file in tree:
IndexError: list index out of range

Process finished with exit code 1

悠悠2264 发表于 2020-4-13 16:18:15

本帖最后由 悠悠2264 于 2020-4-13 16:29 编辑

for j in range(length):
这一行应该是length。比如他的长度是i,索引就是0到i-1,即range(i)。

sunrise085 发表于 2020-4-13 16:25:35

for循环写错了不应该是range(length+1)
而应该是for j in range(length)
range(length)就是索引从0到length-1

sunrise085 发表于 2020-4-13 16:26:34

悠悠2264 发表于 2020-4-13 16:18
这一行应该是length-1。比如他的长度是i,索引就是0到i-1。

你写的不对
range(length)就是索引从0到length-1

悠悠2264 发表于 2020-4-13 16:28:31

sunrise085 发表于 2020-4-13 16:26
你写的不对
range(length)就是索引从0到length-1

好的,感谢
页: [1]
查看完整版本: 第30讲:用户输入文件名以及开始搜索的路径答案,请看看我错哪了