Pythonの初心者です。 デバッグの目的で私のコードをmainで停止したいと思います。私は検査したい変数値を出力するためにロギングモジュールを使用します。python sys.exit:整数が必要です(strを持っていますか?)
ただし、エラーが発生します。それを解決する方法がわからない。 私はまた、コードの小さな部分だけを実行する正しい方法は、デバッグポイントを設定する代わりにsys.exitを使用するのだろうか。私のメインは長く、毎回全部を走らせたくありません。
import linecache
import logging
import sys
import pandas as pd
def print_exception():
exc_type, exc_obj, tb = sys.exc_info()
f = tb.tb_frame
lineno = tb.tb_lineno
filename = f.f_code.co_filename
linecache.checkcache(filename)
line = linecache.getline(filename, lineno, f.f_globals)
print('EXCEPTION IN ({}, LINE {} "{}"): {}'.format(filename, lineno, line.strip(), exc_obj))
if __name__ == "__main__":
try:
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
df = pd.DataFrame({'A': [0, -1, 3, 5, 4, 2, 1],
'B': [12, 12, 14, 15, 14, 16, 200]})
sys.exit('error')
except:
print_exception()
EXCEPTION IN (<ipython-input-9-f42a2adee11e>, LINE 49 "sys.exit('error')"): an integer is required (got type str)
更新:完全なコードを更新しました。私はpython3でPycharmを使っています。
これは他の人たちと同じように些細なことではないと思います。 OPのsys.exitの使用は、ドキュメントと一貫しています。 – Karin
@wimこのコードはPython 2.7.8で正常に動作し、sys.exit()のドキュメントと一貫しています。私は、このコードにはない文脈の問題があると思う(明らかに49行ではないので)。 – Lost
@カリン私は同意すると、人々は額面でエラーを犯していると思うが、この使用法はLinuxとWindowsの両方で素早くテストされており、ドキュメントの一貫性があるので、何かが続いている。 Python 3をまだ試していないのですが、 – Lost