我试图扫描/搜索文件,它抛出:
IndexError:列表索引超出了行"list = self.scanFolder(patht)“的范围
这是一个对象,有一些方法/函数在这里没有显示,因为它们与这段代码无关。
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
发布于 2016-08-04 00:04:15
您正在尝试访问一个无效的职位。
for t in range(len(paths)):
print(paths)
print(t)
list = self.scanFolder(paths[t])
有效的列表索引是0..len(路径)-1。
您应该以更节奏式的形式访问列表元素:
for path in paths:
list = self.scanFolder(path)
如果需要更改列表元素,则应使用枚举()
for pos, path in enumerate(paths):
print ("paths[%s] = %s" %(pos, path))
https://stackoverflow.com/questions/38755425
复制相似问题