python sys.exit:需要一个整数(得到str类型)?

时间:2016-08-10 15:31:05

标签: python

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上。

2 个答案:

答案 0 :(得分:5)

从评论讨论中,我怀疑你的问题是PyCharm正在尝试在内部处理sys.exit()并且它不喜欢你使用自定义错误消息的事实。其他IDE中存在类似问题,例如Python日志记录在Spyder中无法正常工作(可能现在可能尚未解决)。

您的使用本身似乎有效,并且与Python3的文档一致,我在我的系统上运行代码时没有遇到任何问题,并且按预期执行。

我建议您尝试直接使用Python运行代码,而不是使用PyCharm,看看是否能解决问题。如果Python3是您的默认python安装,您只需在文件的目录中打开BASH终端或命令提示符并键入:

python file-name.py 

在终端中运行程序。我怀疑这样做会很好,你在这里做的事情并没有调试你的程序,但在pycharm中发现了一个bug(或特性)。

答案 1 :(得分:-7)

你需要一个整数 - 一个传统的Unix返回码(0表示没有错误,而某些表示错误发生的事情大于0)。

在调试方面,您应该尝试使用IDLE IDE或pdb