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

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

如何修复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())


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5021251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存