2016-06-26 75 views
1

我正在尋找使用Python requests庫來create a new file in a GitHub存儲庫。進入命令行下面的工作對我來說(更換LOGINTOKEN如適用):將PUT轉換爲Python請求的問題:「解析JSON時出現問題」

curl -X PUT -d '{"path": "testfile.txt", "message": "test", "content": "aGVsbG8y"}' https://api.github.com/repos/LOGIN/testrepo/contents/testfile.txt\?access_token\=TOKEN 

,但我一直運行到錯誤「解析JSON的問題」(狀態代碼400)試圖同與請求時:

data = { 
    "message": "test", 
    "content": "aGVsbG8y", 
    "path": "testfile.txt" 
} 
url = "https://api.github.com/repos/LOGIN/testrepo/contents/testfile.txt?access_token={}".format(TOKEN) 
response = requests.put(url, data=data) 

任何提示,我在做什麼不同?我已經檢查過類似的問題,但還沒有找到正確的調整。謝謝!

回答

6

因爲剛通過data參數會自動發送您的字典作爲窗體編碼參數。相反,把它作爲JSON

import json 
data = { 
    "message": "test", 
    "content": "aGVsbG8y", 
    "path": "testfile.txt" 
} 
url = "https://api.github.com/repos/LOGIN/testrepo/contents/testfile.txt?access_token={}".format(TOKEN) 
response = requests.put(url, data=json.dumps(data)) 

或者,如果你使用的版本至少爲2.4.2,你可以做這樣的:

response = requests.put(url, json=data)