如你所见,有时file[1]['a']是<class 'dict'>,但有时它是<class 'str'>,<class 'str'>导致TypeError: string indices must be integers。 当您尝试使用字符串值而不是索引号访问字符时,会出现TypeError: string indices must be integers错误。 这正是find_path_descriptor尝试访问'n'密钥时所发生的情况,如下所示:file[1]['a']['n'](因为它期望file[1]['a']是<class 'dict'>)。这就是为什么会出现错误。
def find_path_descriptor(self, path, files=()):
"""
Find descriptor of folder inside a path. i.e.: folder1/folder2/folder3
Params:
path, string like folder1/folder2/folder3
Return:
Descriptor (str) of folder3 if exists, None otherwise
"""
paths = path.split('/')
files = files or self.get_files()
parent_desc = self.root_id
found = False
for foldername in paths:
if foldername != '':
for file in files.items():
if (not (type(file[1]['a']) is dict)):
continue
if (file[1]['a'] and file[1]['t']
and file[1]['a']['n'] == foldername):
if parent_desc == file[1]['p']:
parent_desc = file[0]
found = True
if found:
found = False
else:
return None
return parent_desc
2条答案
按热度按时间zxlwwiss1#
https://github.com/odwyersoftware/mega.py/issues/15我在他们的github页面上找到了一个临时的工作。
mqkwyuun2#
总结
问题出在
find_path_descriptor
函数中(行:289)在mega.py
封装中。调试
1.我注解了第305到309行
1.在此之上(行:305)我在下面插入了一行,返回
file[1]['a']
及其类型1.我调用了
find_path_descriptor
函数下面是输出:(我用“名称-i”、“字符串-i”和“值-i”替换了这些值,以隐藏我的大型文件的信息)
如你所见,有时
file[1]['a']
是<class 'dict'>
,但有时它是<class 'str'>
,<class 'str'>
导致TypeError: string indices must be integers
。当您尝试使用字符串值而不是索引号访问字符时,会出现
TypeError: string indices must be integers
错误。这正是
find_path_descriptor
尝试访问'n'
密钥时所发生的情况,如下所示:file[1]['a']['n']
(因为它期望file[1]['a']
是<class 'dict'>
)。这就是为什么会出现错误。修复
file[1]['a']
是否是<class 'dict'>
,否则跳过它,使用continue
。现在,您的
find_path_descriptor
函数应该如下所示: