我想用JSON打印特定数据,但出现以下错误:
Traceback (most recent call last):
File "script.py", line 47, in <module>
print(link['data.file.url.short'])
TypeError: 'int' object has no attribute '__getitem__'
这是JSON:
{
"status":true,
"data":{
"file":{
"url":{
"full":"https://anonfile.com/y000H35fn3/yuh_txt",
"short":"https://anonfile.com/y000H35fn3"
},
"metadata":{
"id":"y000H35fn3",
"name":"yuh.txt",
"size":{
"bytes":0,
"readable":"0 Bytes"
}
}
}
}
}
我正在尝试获取data.file.url.short
,它是url的短值
这是有问题的脚本:
post = os.system('curl -F "file=@' + save_file + '" https://anonfile.com/api/upload')
link = json.loads(str(post))
print(link['data.file.url.short'])
谢谢
答案 0 :(得分:2)
除了@John Gordon提到的os.system()返回值,我认为访问data.file.url.short
的正确语法是link['data']['file']['url']['short']
,因为json.loads
返回dict
。>
答案 1 :(得分:1)
os.system()
不返回命令的输出;它返回命令的退出状态,它是整数。
如果要捕获命令的输出,请参见this question。
答案 2 :(得分:1)
您正在捕获os.system创建的进程的返回码,该返回码是整数。
为什么不使用urllib模块中的request类在python中执行该操作?
import urllib.request
import json
urllib.request.urlretrieve('https://anonfile.com/api/upload', save_file)
json_dict = json.load(save_file)
print(json_dict['data']['file']['url']['short']) # https://anonfile.com/y000H35fn3
或者,如果您不需要保存文件,则可以使用请求库:
import requests
json_dict = requests.get('https://anonfile.com/api/upload').json()
print(json_dict['data']['file']['url']['short']) # https://anonfile.com/y000H35fn3