python脚本上的KeyError
我使用此脚本从我的slack帐户中删除文件:python脚本上的KeyError,python,json,api,Python,Json,Api,我使用此脚本从我的slack帐户中删除文件: import requests import json import calendar import re from datetime import datetime, timedelta _token = re.escape("token") _domain = re.escape("domain") if __name__ == '__main__': while 1: files_list_url = 'https:
import requests
import json
import calendar
import re
from datetime import datetime, timedelta
_token = re.escape("token")
_domain = re.escape("domain")
if __name__ == '__main__':
while 1:
files_list_url = 'https://slack.com/api/files.list'
date = str(calendar.timegm((datetime.now() + timedelta(-30))
.utctimetuple()))
data = {"token": _token, "ts_to": date}
response = requests.post(files_list_url, data = data)
if len(response.json()["files"]) == 0:
break
for f in response.json()["files"]:
print "Deleting file " + f["name"] + "..."
timestamp = str(calendar.timegm(datetime.now().utctimetuple()))
delete_url = "https://" + _domain + ".slack.com/api/files.delete?t=" + timestamp
requests.post(delete_url, data = {
"token": _token,
"file": f["id"],
"set_active": "true",
"_attempts": "1"})
print "DONE!"
我收到这个错误:
文件“main.py”,第28行,在
files=json.loads(content)[“files”]键错误:“files”
我错过什么了吗?
Tks 开关
if len(response.json()["files"]) == 0:
到
默认情况下,如果属性不存在,get方法返回None
,而如果项不存在,[]符号则抛出错误。如果response.json()没有files属性(这里就是这样),那么它将中断。开关
if len(response.json()["files"]) == 0:
到
默认情况下,如果属性不存在,get方法返回
None
,而如果项不存在,[]符号则抛出错误。如果response.json()没有files属性(这就是这里发生的情况),那么它将中断。您希望json.loads()
将返回一个dict,该dict将有一个名为files
的键。但实际上,解析后的数据没有该键
您可以改为执行以下操作:
payload = json.loads(content)
files = payload.get('files')
通过这种方式,文件
将包含JSON负载中的实际文件。如果文件键不存在,它将返回None
如果找不到键,还可以将值传递给get
方法以设置默认值,如下所示:
files = payload.get('files', [])
这样,如果文件键不存在,文件将成为空列表 您希望
json.loads()
将返回一个dict,其中包含一个名为files
的键。但实际上,解析后的数据没有该键
您可以改为执行以下操作:
payload = json.loads(content)
files = payload.get('files')
通过这种方式,文件
将包含JSON负载中的实际文件。如果文件键不存在,它将返回None
如果找不到键,还可以将值传递给get
方法以设置默认值,如下所示:
files = payload.get('files', [])
这样,如果文件键不存在,文件将成为空列表 如果“files”键不存在,
get
方法将返回None
。在None
上运行len()好极了,谢谢!切换get以返回空列表而不是标题“files”键不存在,则get
方法将返回None
。在None
上运行len()好极了,谢谢!切换get以返回空列表