gpt4 book ai didi

Python 2.x 到 3.x 转换的代码在 IO.StringIO 转换中失败

转载 作者:行者123 更新时间:2023-12-01 02:05:21 25 4
gpt4 key购买 nike

python 2.x 代码

sdata = StringIO.StringIO(c.data)

python 3.x 代码

sdata = io.StringIO(c.data)

完整代码

def downloadCSV(c, d):
filename = c.getFilename(d)
reqstr = c.getReqStr(d)

print(("Downloading %s ..." % (filename)))
if c.getResponse(reqstr) == -1:
return -1
sdata = io.StringIO(c.data)
z = zipfile.ZipFile(sdata)

错误:

Traceback (most recent call last):
File "xxx.py", line 166, in <module>
main(sys.argv[1:])
File "xxxx.py", line 158, in main
getMonth(c, args[1], args[2])
File "xxxx.py", line 133, in getMonth
if downloadCSV(c, d) > -1:
File "xxxx.py", line 73, in downloadCSV
sdata = io.StringIO(c.data)
TypeError: initial_value must be str or None, not bytes

3.x python 版本已完成正确导入,并且 sdata 的转换应该在此处自动发生?为什么会出现上述错误,以及在 python3.x 中纠正此错误的方法是什么。尝试了此论坛中发布的其他答案,但在这种情况下似乎没有任何效果。

最佳答案

Python 3 现在区分了 strbytes

您的请求返回了二进制数据,因此为了能够将其存储在 io 对象中,您必须创建一个 BytesIO 对象而不是 StringIO > 对象。所以:

sdata = io.BytesIO(c.data) 

请注意,代码仍然与 Python 2 兼容。

关于Python 2.x 到 3.x 转换的代码在 IO.StringIO 转换中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49132517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com