栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何修复ValueError:读取关闭的文件异常?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何修复ValueError:读取关闭的文件异常?

您的URL返回403代码错误,显然urllib.request.urlretrieve不善于检测所有HTTP错误,因为它正在使用,

urllib.request.FancyURLopener
并且这是最新尝试通过返回a
urlinfo
而不是引发错误来吞噬错误。

关于此修复程序,如果您仍然想使用urlretrieve,则可以像这样覆盖FancyURLopener(随附的代码也可以显示错误):

import urllib.requestfrom urllib.request import FancyURLopenerclass FixFancyURLOpener(FancyURLopener):    def http_error_default(self, url, fp, errpre, errmsg, headers):        if errpre == 403: raise ValueError("403")        return super(FixFancyURLOpener, self).http_error_default( url, fp, errpre, errmsg, headers        )# Monkey Patchurllib.request.FancyURLopener = FixFancyURLOpenerurl = "http://scholar.google.com/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0"urllib.request.urlretrieve(url, "cite0.bib")

否则,这是 我建议
您可以

urllib.request.urlopen
像这样使用的:

fp = urllib.request.urlopen('http://scholar.google.com/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0')with open("citi0.bib", "w") as fo:    fo.write(fp.read())


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号