Hi is anyone able to help. I am learning to use argparse and i want to use the command to call the school.py as school start for example. I have this so far but struggling to handle the arguments. Am i doing this right or what am i doing totally wrong?
if __name__ == '__main__': parser = argparse.ArgumentParser(description="This allows quick opening of applications used within the school day") parser.add_argument("start", help="This will open all the standard applications used within the school day.") parser.add_argument("engine", help="This will show the Engineering folder within Documents") parser.add_argument("bus", help="This will show the Business folder within Documents") parser.add_argument("cs", help="This will show the Computer Science folder within Documents") parser.add_argument("python", help="This will open the PyCharm application") args = parser.parse_args() try: if len(sys.argv) > 1: if sys.argv[1] == "engine": engineering() elif sys.argv[1] == "cs": computer_science() elif sys.argv[1] == "python": python() elif sys.argv[1] == "bus": business() elif sys.argv[1] == "start": std_day() except: print("An error has occurred")
My error is
usage: autoSchoolDay.py [-h] start engine bus cs python
autoSchoolDay.py: error: the following arguments are required: engine, bus, cs, python
Advertisement
Answer
parser = argparse.ArgumentParser(description="This allows quick opening of applications used within the school day") parser.add_argument('command', choices=['start', 'engine', 'bus', 'cs', 'python']) args = parser.parse_args() try: if args.command: if args.command == "engine": engineering() elif args.command == "cs": computer_science() elif args.command == "python": python() elif args.command == "bus": business() elif args.command == "start": std_day() except Exception as e: print("An error has occurred", e)