从 python 中的方法返回错误字符串

Returning error string from a method in python

我正在阅读一个类似的问题Returning error string from a function in python。当我尝试在面向对象编程中创建类似的东西以便我可以学到更多东西时,我迷路了。

我正在使用 Python 2.7,我是面向对象编程的初学者。

我不知道如何让它工作。

示例代码checkArgumentInput.py:

#!/usr/bin/python

__author__ = 'author'


class Error(Exception):
    """Base class for exceptions in this module."""
    pass


class ArgumentValidationError(Error):
    pass

    def __init__(self, arguments):
        self.arguments = arguments

    def print_method(self, input_arguments):
        if len(input_arguments) != 3:
            raise ArgumentValidationError("Error on argument input!")
        else:
            self.arguments = input_arguments
            return self.arguments

在 main.py 脚本上:

#!/usr/bin/python
import checkArgumentInput

__author__ = 'author'


argsValidation = checkArgumentInput.ArgumentValidationError(sys.argv)

if __name__ == '__main__':

    try:
        result = argsValidation.validate_argument_input(sys.argv)
        print result
    except checkArgumentInput.ArgumentValidationError as exception:
        # handle exception here and get error message
        print exception.message

当我执行 main.py 脚本时,它会产生两个空行。即使我没有提供任何参数作为输入,或者即使我提供了参数输入。

所以我的问题是如何让它发挥作用?

我知道有一个模块可以通过检查参数输入为我完成这项工作argparse,但我想实现一些我也可以在其他情况下使用的东西(尝试,除了)。

提前感谢您花时间和精力阅读并回答我的问题。

好的。所以,通常调用函数 sys.argv[] 时会在其末尾加上括号,并在括号之间加上一个数字,例如:sys.argv[1]。此函数将读取您的命令行输入。 Exp.: sys.argv[0] 是文件名。

main.py 42

在这种情况下 main.py 是 sys.argv[0],42sys.argv[1]

您需要确定要从命令行获取的字符串。 我认为这是问题所在。

更多信息:https://docs.python.org/2/library/sys.html

我做了一些研究,发现这个有用的问题/答案帮助我理解了我的错误:Manually raising (throwing) an exception in Python

我将正确的功能代码贴在下面,以防将来有人受益。

示例代码checkArgumentInput.py:

#!/usr/bin/python

__author__ = 'author'


class ArgumentLookupError(LookupError):
    pass

    def __init__(self, *args): # *args because I do not know the number of args (input from terminal)
        self.output = None
        self.argument_list = args

    def validate_argument_input(self, argument_input_list):
        if len(argument_input_list) != 3:
            raise ValueError('Error on argument input!')
        else:
            self.output = "Success"
            return self.output

第二部分main.py:

#!/usr/bin/python
import sys
import checkArgumentInput

__author__ = 'author'

argsValidation = checkArgumentInput.ArgumentLookupError(sys.argv)

if __name__ == '__main__':

    try:
        result = argsValidation.validate_argument_input(sys.argv)
        print result
    except ValueError as exception:
        # handle exception here and get error message
        print exception.message

以下代码打印:Error on argument input! 符合预期,因为我违反了条件。

无论如何感谢大家的时间和努力,希望这个回答对以后的其他人有所帮助。