gpt4 book ai didi

python - shutil.copyfileobj 错误地复制了数据

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:16 26 4
gpt4 key购买 nike

为了处理一些图片(下载、检测格式和存储),我使用以下代码:

image = urllib.request.urlopen(img_url)
buf = io.BytesIO()
shutil.copyfileobj(image, buf)
ext = imghdr.what(buf)

ext 为空(意味着无法检测到格式)。我尝试以不同的方式重做:

image = urllib.request.urlopen(link)
test = image.read()
binbuf = io.BytesIO(test)
imghdr.what(binbuf)

这确实奏效了。我的结论是 copyfileobj 以某种方式搞砸了。为什么会这样?

最佳答案

shutil.copyfileobj(image, buf)写入buf后,buf的流指针指向下一个位置在你刚刚写入的数据结束之后。当您尝试执行 ext = imghdr.what(buf) 时,它不会读取任何内容(因为从该位置没有更多内容可读取)并返回 None。在尝试读取您刚刚编写的内容之前,您需要将 .seek() 返回到 0

这个有效:

image = urllib.request.urlopen(img_url)
buf = io.BytesIO()
shutil.copyfileobj(image, buf)
buf.seek(0)
ext = imghdr.what(buf)

关于python - shutil.copyfileobj 错误地复制了数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32147491/

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