Преобразуйте команду PUT curl в Python request.put - PullRequest
0 голосов
/ 29 сентября 2018

Я хотел бы превратить эту команду curl:

curl -v -k -X PUT -u user:passwd --data-binary @somefile -H 'Content-Type:text/plain' https://192.168.0.22/dir/subdir

в команду python request.put.

Я видел довольно много примеров преобразований POST на этом форуме, но покапараметр типа --data-binary @somefile, по-видимому, не имеет перевода.

Я пробовал по крайней мере два следующих соглашения:

auth = ('user', passwd)
headers = {'Content-Type': 'text/plain'}
data = '-v -k -X --data-binary @somefile'
requests.put(uri, auth=auth, headers=headers, data=data, verify=False)


auth = ('user', passwd)
headers = {'Content-Type': 'text/plain'}
somefile=open('somefile','rb')
requests.put(uri, auth=auth, headers=headers, data={'somefile': somefile}, verify=False)

Данная команда curlработает из командной строки, но я не могу получить правильный синтаксис в Python.

Может кто-нибудь пролить свет на то, что я мог бы попробовать дальше?

спасибо,

д-бит

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Это был код, который позволил скрипту загрузить файл:

somefile = open('somefile','r')
response = requests.put(uri, auth=auth, headers=headers, files={'--data-binary':somefile}, verify=False)

Я благодарен за помощь.

спасибо,

q-bit

0 голосов
/ 29 сентября 2018

Отправьте обработчик файла как данные, не сохраняя его внутри dict

auth = ('user', passwd)
headers = {'Content-Type': 'text/plain'}
somefile=open('somefile','r')
requests.put(uri, auth=auth, headers=headers, data=somefile, verify=False)

Или

file = {'file': ('somefile', open('somefile','r'), 'text/plain' )}
requests.put(url, auth=auth, headers=headers, files=file, verify=False)

И вам не нужно читать содержимое файла, requestsуже делает это для параметров data & files.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...