Mar-15-2022, 01:44 PM
Your problem is your debugging code.
The debugging code had a bug. If no arguments are supplied, the index access sys.argv[1] will throw the exception.
Catching all Exceptions with Exception is wrong. Instead, let fail your code in the first place.
Then look which Exceptions could occur and which Exceptions you expect to catch.
The debugging code had a bug. If no arguments are supplied, the index access sys.argv[1] will throw the exception.
Catching all Exceptions with Exception is wrong. Instead, let fail your code in the first place.
Then look which Exceptions could occur and which Exceptions you expect to catch.
import argparse def get_args(): parser = argparse.ArgumentParser() parser.add_argument("-N", "--host", help="Node Name") parser.add_argument("-I", "--IPAddress", help="Node Name") parser.add_argument("-S", "--service", help="Service Name") parser.add_argument("-D", "--displayname", help="Display Name") parser.add_argument("-G", "--group", help="Group") parser.add_argument("-E", "--environment", help="Environement") parser.add_argument("-Z", "--newstate", help="Current Type of the alert") parser.add_argument("-A", "--appname", help="Application Name") parser.add_argument("-HA", "--hostappname", help="Host App Name") parser.add_argument("-P", "--priority", help="Priority") parser.add_argument("-O", "--output", help="Description") parser.add_argument("-T", "--eventtime", help="Event Time") parser.add_argument("-OS", "--os", help="Operating System") parser.add_argument("-OP", "--operator", help="Operator") parser.add_argument( "-NT", "--notificationtype", help="Notification Type Problem or Clear" ) parser.add_argument("-ND", "--notification_default", help="Define which Operator") parser.add_argument("-NM", "--groupoperatoros", help="OS Group") # taken parser.add_argument("-NO", "--groupoperatormw", help="Middleware Group") return parser.parse_args() if __name__ == "__main__": args = get_args() print(args) # This error came from line 14 # Line 14: logging.debug('I can print the first argument %s', sys.argv[1]) #check arguments 1 # 14927 2022-03-15 14:18:52 DEBUG - <module>: This message should go to the log file list index out of range # conclusion, your debugging code introduced new bugsIf you want to use short and long arguments which are required, then you can add
required=True
.import argparse parser = argparse.ArgumentParser() parser.add_argument("-o", "--output", required=True) # simulating the commandline args = parser.parse_args(["-o", "test_OUTPUT"]) print(args) # This here will raise an SystemExit exception because of wrong input # usually the program will then exit with the supplied code try: parser.parse_args([]) except SystemExit as e: print("Method parse_args wanted to exit the programm with return_code", e.code)
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
All humans together. We don't need politicians!