4

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)
4

2 に答える 2

3

e.stderr に関するメッセージは、shモジュールから送信されます。

( https://github.com/amoffat/sh/blob/30bd191a4f966bcf82c5666c56aeb1060d035920/sh.py#L148 )

error.pystderr に大量の書き込みを行い、ゼロ以外のリターン コードで終了する単純なプログラムを作成しました。メッセージを取り除くには、単純に try/except ブロックを使用します。

import sh

cmd = sh.Command("./error.py")
try:
   c = cmd()
except sh.ErrorReturnCode, e:
    print e.stderr
于 2014-05-20T11:58:30.087 に答える
0

この回答を確認してください: mechanize タグ br.set_handle_gzip は何をしますか?

うまくいけば、エラーの数が 1 以上減少します。

于 2013-01-23T02:23:31.647 に答える