首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >扫描文件时的Python IndexError

扫描文件时的Python IndexError
EN

Stack Overflow用户
提问于 2016-08-03 23:53:22
回答 1查看 49关注 0票数 0

我试图扫描/搜索文件,它抛出:

IndexError:列表索引超出了行"list = self.scanFolder(patht)“的范围

这是一个对象,有一些方法/函数在这里没有显示,因为它们与这段代码无关。

代码语言:javascript
运行
复制
def scanFolder(self, path):
    try:
        return os.listdir(path)
    except WindowsError:
        return "%access-denied%"

def separate(self, files):
    #Give Param of Files with exact path
    file = []
    dir = []
    for x in range(len(files)):

        if os.path.isfile(files[x]):

            file.append(files[x])

    for x in range(len(files)):
        if os.path.isdir(files[x]):
            dir.append(files[x])
    return file, dir

   def startScan(self):
    driveLetters = self.getDrives()
    matches = []
    paths = []
    paths2 = []
    path = "C:/"
    list = self.scanFolder(path)

    if list != "%access-denied%":
        for i in range(len(list)):
            list[i] = os.path.join(path, list[i])

        files, dirs = self.separate(list)
        paths2.extend(dirs)
        for i in range(len(files)):
            if files[i].lower() in self.keyword.lower():
                matches.append(files[i])

        paths = []
        paths = paths2
        paths2 = []
    while paths != []:
        for t in range(len(paths)):

            print(paths)
            print(t)
            list = self.scanFolder(paths[t])
            if list != "%access-denied%":
                for i in range(len(list)):
                    list[i] = os.path.join(paths[t], list[i])

                files, dirs = self.separate(list)
                if dirs != []:
                    paths2.extend(dirs)
                for i in range(len(files)):
                    if files[i].lower() in self.keyword.lower():
                        matches.append(files[t])

                paths = paths2
                paths2 = []

    return matches
EN

回答 1

Stack Overflow用户

发布于 2016-08-04 00:04:15

您正在尝试访问一个无效的职位。

代码语言:javascript
运行
复制
for t in range(len(paths)):
    print(paths)
    print(t)
    list = self.scanFolder(paths[t])

有效的列表索引是0..len(路径)-1。

您应该以更节奏式的形式访问列表元素:

代码语言:javascript
运行
复制
for path in paths:
    list = self.scanFolder(path)

如果需要更改列表元素,则应使用枚举()

代码语言:javascript
运行
复制
for pos, path in enumerate(paths):
    print ("paths[%s] = %s" %(pos, path))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38755425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档