如果用户做错了,如何分配错误消息?蟒蛇

时间:2013-08-08 13:31:43

标签: python

我有一个csv文件所在的目录。代码读取文件并根据文件中的数据创建直方图。

但是,我试图让它在命令行中输入csv文件中的一个列标题,代码只会生成指定命令的图形。示例:python histogram_maker.py "C:/Folder" Area

我能够做到这一点,但我想添加一个会在用户输入未在csv文件中指定的命令时创建错误消息的部分。示例:周边不存在。我怎样才能做到这一点?

for column in df:
    os.chdir(directory)
    if len(sys.argv)>2:
        for x in arguments:
            if x.endswith(column):
                # code to make histogram

如果x.endswith(column)没有出现错误消息,则需要部分说明。

3 个答案:

答案 0 :(得分:1)

在python中发出错误的标准方法是使用raise Exception("error message")。或者以同样的方式使用Exception的子类。如果您不想在用户上转储堆栈跟踪,可以将整个脚本包装在try...except语句中,并使用sys.stderr.write(str(e))块中的except之类的内容来打印向STDERR发送错误消息。然后使用sys.exit(1)以非零返回码退出,或者更好地使用errno模块中的相应返回码传递给sys.exit

所以我会做这样的事情(如果我理解你的问题):

import sys, errno

try:
    for column in df:
        os.chdir(directory)
        if len(sys.argv)>2:
            for x in arguments:
                if x.endswith(column):
                    # code to make histogram
                    pass
                else:
                    raise Exception("Perimeter does not exist")
except Exception, e:
    sys.stderr.write("Error: %s" % str(e))
    sys.exit(errno.EINVAL)

请参阅errors and exceptions上的python文档。

答案 1 :(得分:0)

你在找这个吗?

raise Exception("Perimeter does not exist")

Documentation

答案 2 :(得分:0)