百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[其它内容] 解决 Python requests 库不支持发送可迭代对象的问题 [复制链接]
查看:126 | 回复:0

1477

主题

1656

帖子

9

积分

落伍者(一心一意)

Rank: 1

贡献
685
鲜花
0
注册时间
2016-6-22

落伍者落伍微信绑定落伍手机绑定

发表于 2023-11-14 15:37:05 | 显示全部楼层 |阅读模式 来自 中国江苏淮安
华科云商丑图.jpg
​​Python是一个开源的、高级的、解释型的编程语言,它具有简单易学、可读性强、可扩展性强和丰富的第三方库等优点。Python的requests库是Python中最常用的一个库,用于发送HTTP请求。然而,最近,用户tzickel在使用requests库时遇到了一个问题,他尝试发送一个可迭代对象作为数据,并且知道数据的长度,但是requests库不允许这个操作。tzickel在issue#4837中描述了这个问题,并提出了一些可能的解决方案。

requests库的作者们在issue#4837中解释了这个问题的原因,并且提供了一个临时的解决方案。他们建议用户在发送数据时,先将可迭代对象转换为一个字节流,然后再将其作为数据发送。

以下是一个可能的解决方案:

```python

from io import BytesIO

import requests

#假设data是一个可迭代对象,其长度为len

data=[b'a',b'b',b'c',b'd',b'e']

#将data转换为一个字节流

data_stream=BytesIO()

for chunk in data:

data_stream.write(chunk)

data_stream.seek(0)

#使用字节流作为数据发送请求

response=requests.post('http://example.com',data=data_stream)

```

这个解决方案可以解决requests库不支持发送可迭代对象作为数据,并且知道数据长度的问题。但是,这个解决方案需要用户手动将可迭代对象转换为一个字节流,这可能会增加开发的复杂性。此外,如果数据非常大,这可能会导致内存消耗过大。因此,requests库的作者们仍然在考虑如何改进requests库,以支持发送可迭代对象作为数据,并且知道数据长度。

总体来说,requests库的临时解决方案是一个有效的解决方案,它可以解决requests库不支持发送可迭代对象作为数据,并且知道数据长度的问题。但是,这个解决方案也存在一些问题,比如增加了开发的复杂性和可能导致内存消耗过大。因此,如果我们需要发送可迭代对象作为数据,并且知道数据长度,我们可能需要考虑使用其他的方法,或者等待requests库的作者们改进requests库。​​​​
企业专线拨号VPS动态IP派克斯ADSL本地拨号,联系QQ174629754
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-11-26 22:44 , Processed in 0.048391 second(s), 34 queries , Gzip On.

返回顶部