python-3.x - 如何发布带有请求的 json 文件
问题描述
编辑:抱歉,这是漫长的一天。我以为我在描述中添加了更多信息。这是我的代码:
import requests
import json
url = 'https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21'
headers = {'Authorization' : ('username', 'password'), 'Accept' : 'application/json', 'Content-Type' : 'application/json'}
r = requests.post(url, data=open('tweets.json', 'rb'), headers=headers)
这是我收到的错误,我在正确的目录中,并且 100% 有一个名为 tweets.json 的文件。
FileNotFoundError: [Errno 2] No such file or directory: 'tweets.json'
我正在尝试使用 Python 包请求向 IBM Watson 编写 API 请求。我已经尝试了几个小时,但没有运气。
我已经成功地在 cURL 中为 api 写了一个 POST,但我真的很难将它放入我的应用程序所使用的语言 python。
有人可以帮我把这个 cURL 请求翻译成 Python 请求吗?
curl -X POST -u "password:username" --header "Content-Type: application/json" --data-binary @tone.json "https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21"
最好的,瑞恩
解决方案
尝试这样的事情 - 您需要获取并加载您的 json 数据,并且您还需要稍微不同地进行身份验证:
import requests
import json
from requests.auth import HTTPBasicAuth
url = 'https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-21'
headers = {'Accept' : 'application/json', 'Content-Type' : 'application/json'}
with open('tweets.json') as f:
data = json.loads(f.read())
r = requests.post(url, data=data, headers=headers, auth=HTTPBasicAuth('username', 'password'))
如果您的 JSON 文件非常大,您可以像在问题中那样传递数据,但这在 IMO 中更具可读性。
推荐阅读
- javascript - 应用程序节点自动删除,服务器上没有错误
- javascript - 如何将 Timelinemax / Tween 用于移动对象?
- excel - 为什么 Excel 中的 INDIRECT 函数不适用于表示非连续单元格的字符串?
- javascript - 如何在wordpress中使用jquery删除脚本
- python - 即使调用了 model.to(device),torch 模块的某些成员也不会移动到 GPU
- matlab - 使用matlab去除结构中的字段
- linux - 有谁知道如何查看 cpython-37m-x86_64-linux-gnu.so?
- json - 如何将多个请求(http 方法:PUT)发送到单个端点
- c - 为什么我不能比较这两个字符串?字符串输入是一样的,但是总是返回false
- spring-boot - onErrorResume() 不会被调用