通过sh modu运行python脚本后访问stderr

2024-05-02 21:59:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过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)

Tags: runinpytestbrowser错误stderrline
2条回答

关于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

看看这个答案: what does mechanize tag br.set_handle_gzip do?

希望能将错误数减少1个以上。在

相关问题 更多 >