我正在通过sh模块运行Python脚本,并且在执行期间崩溃。崩溃后,它给我一个stderr前几行的读数,但它告诉我有更多错误,我应该看到e.stderr,但我无法弄清楚如何做到这一点,因为我没有知道e是什么。如何访问我的stderr文件的其余部分?感谢。
编辑:这是错误:
STDERR:
mydir/test.py:22: UserWarning: gzip transfer encoding is experimental!
br.set_handle_gzip(True)
Traceback (most recent call last):
File "mydir/test.py", line 142, in <module>
run(sys.argv[1]);
File "mydir/test.py", line 13, in run
scrape(browser,folderName);
File "mydir/test.py", line 46, in scrape
processResponse(browser,folderName,1);
File "mydir/test.py", line 121, in processResponse
urllib.urlencode(data));
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mechanize-0.2.6.dev_20130122-py2.7.egg/mechanize/_mechanize.py", line 203, in open
return self._mech_open(url, data, timeout=timeout)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-pac... (4278 more, please see e.stderr)
答案 0 :(得分:1)
有关e.stderr的消息来自sh
模块。
(https://github.com/amoffat/sh/blob/30bd191a4f966bcf82c5666c56aeb1060d035920/sh.py#L148)
我编写了一个简单的程序error.py
,它只是向stderr写了很多,然后以非零返回码退出。
要删除消息,只需使用try / except bloc:
import sh
cmd = sh.Command("./error.py")
try:
c = cmd()
except sh.ErrorReturnCode, e:
print e.stderr
答案 1 :(得分:0)
看看这个答案: what does mechanize tag br.set_handle_gzip do?
希望将错误数量减少1个以上。