edit:抱歉,今天已经很漫长了。我以为我在说明中放了更多信息。这是我的代码:
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'
我正在尝试使用Requests Python包将API请求写入IBM Watson。我已经尝试了几个小时,却没有运气。
我已经成功地使用cURL将POST写入api,但是我真的很努力地将其引入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"
最好, 瑞安
答案 0 :(得分:0)
尝试类似的方法-您需要获取并加载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。