Python 如何在不全局重新定义sys.stderr的情况下重定向urllib2调试输出?
在Python 如何在不全局重新定义sys.stderr的情况下重定向urllib2调试输出?,python,urllib2,python-2.6,Python,Urllib2,Python 2.6,在urllib2中,当我指定debuglevel参数时,如何重定向特定打开程序生成的输出 例如,对于这个例子 opener = urllib2.build_opener(urllib2.HTTPHandler(debuglevel=2)) opener.open("http://stackoverflow.com") 如何在类似于sys.stderr的“对象”中捕获输出,并将其写入任何我喜欢的地方 我有一个使用日志和stderr的脚本,这个特定的输出应该在不妨碍任何其他输出的情况下进入日志。调
urllib2
中,当我指定debuglevel
参数时,如何重定向特定打开程序生成的输出
例如,对于这个例子
opener = urllib2.build_opener(urllib2.HTTPHandler(debuglevel=2))
opener.open("http://stackoverflow.com")
如何在类似于sys.stderr
的“对象”中捕获输出,并将其写入任何我喜欢的地方
我有一个使用日志和stderr的脚本,这个特定的输出应该在不妨碍任何其他输出的情况下进入日志。调试输出是使用生成的 很容易理解,但效果是全局的,即,如果有其他Python线程正在运行,那么如果它们将某些内容打印到
sys.stdout
,就会看到更改
您可能无法覆盖Python 2.6中
print
语句的功能。您可以在Python3中执行此操作,其中print()
是一个函数。注意:。在urllib2发出请求时,程序中是否有多个线程可以打印?@J.F.Sebastian:很遗憾,是的。谢谢你的回答和时间。我想我必须为urlib2
调试使用锁定或单独的日志文件。来自uuu future\uuu导入print\u函数的是否会修复您提到的限制?否。\uu future\uuu
只影响当前模块。它对urllib2