Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在不全局重新定义sys.stderr的情况下重定向urllib2调试输出?_Python_Urllib2_Python 2.6 - Fatal编程技术网

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