将curl PUT命令转换为Python request.put

时间:2018-09-28 21:56:30

标签: python curl

我想打开这个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中。

任何人都可以阐明我接下来可以尝试的方法吗?

谢谢

q位

2 个答案:

答案 0 :(得分:0)

将文件处理程序作为数据发送,而不是将其保存在字典中

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已经对可流动的datafiles参数进行了此操作。

答案 1 :(得分:0)

这是使脚本能够加载文件的代码:

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

感谢您的帮助。

谢谢

q位