我试图从filteredKeys()函数创建一个键列表,但是当我调用该函数时,我得到一个TypeError:“NoneType”对象不可编辑。在
当我打印filteredKeys()的结果但将其转换为列表时,“None”不存在。我错过了什么?我快疯了!在
key_list = []
for line in stdout.read().splitlines():
input_line = line
input_line = input_line.replace(b'[sudo] password for ufitadmin: ', b'')
key_individual = str(input_line, 'utf-8')
key_individual = key_individual.replace(
'cat: /home/%s/.ssh/authorized_keys: No such file or directory' % user,
'No key exists for this user.')
key_list.append(key_individual)
global keyDict
keyDict = {}
keyDict[host] = key_list
filterString = "No key exists for this user."
filteredKeylist = []
def filteredKeys():
for key,value in keyDict.items():
for values in value:
if values == filterString:
return key
filteredKeylist = list(filteredKeys())
print(filteredKeylist)
您的
filteredKeys()
函数实际上很可能返回None
-当没有一个值与filterString
匹配时。在另外,您声明要“从filteredKeys()函数创建一个键列表”,但是由于它返回一个值(要么是
None
),要么是第一个值与filterString
匹配的键),所以它的工作方式与您预期的一样。在更好的实现方法是让它成为一个生成器:
但这仍然是一种毫无用处的复杂写作方式:
^{pr2}$同样,你的代码似乎过于复杂,我已经发现一个明显的错误,keyDict在每次迭代中都被覆盖。在
相关问题 更多 >
编程相关推荐