我正在阅读类似的问题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来为我工作,但我想实现一些我可以在其他情况下使用的东西(尝试,除了)。
提前感谢您花时间和精力阅读并回复我的问题。
答案 0 :(得分:0)
行。因此,函数sys.argv[]
通常在其末尾使用括号调用,并在括号之间使用数字,例如:sys.argv[1]
。此函数将读取您的命令行输入。 Exp。:sys.argv[0]
是文件的名称。
main.py 42
在这种情况下,main.py
是sys.argv [0]而42
是sys.argv[1]
。
您需要识别您将从命令行中获取的字符串。 我认为这就是问题所在。
答案 1 :(得分:0)
我做了一些研究,我发现这个有用的问题/答案帮助我理解了我的错误: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!
,因为我违反了条件。
任何方式都要感谢你们的时间和精力,希望这个答案能在将来帮助别人。