python新手。 我想在main中停止我的代码以进行调试。我使用日志记录模块来打印我想要检查的变量值。
但是,它会引发错误。不知道如何解决它。 我也想知道使用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)
更新:我已更新完整代码。我在Pycharm的python3上。
答案 0 :(得分:5)
从评论讨论中,我怀疑你的问题是PyCharm正在尝试在内部处理sys.exit()并且它不喜欢你使用自定义错误消息的事实。其他IDE中存在类似问题,例如Python日志记录在Spyder中无法正常工作(可能现在可能尚未解决)。
您的使用本身似乎有效,并且与Python3的文档一致,我在我的系统上运行代码时没有遇到任何问题,并且按预期执行。
我建议您尝试直接使用Python运行代码,而不是使用PyCharm,看看是否能解决问题。如果Python3是您的默认python安装,您只需在文件的目录中打开BASH终端或命令提示符并键入:
python file-name.py
在终端中运行程序。我怀疑这样做会很好,你在这里做的事情并没有调试你的程序,但在pycharm中发现了一个bug(或特性)。
答案 1 :(得分:-7)