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
parser.add_argument('command', choices=['start', 'engine', 'bus', 'cs', 'python'], default='start')and then you'd doif args.command == "engine":and so on.school startorschool engineargparseyou shouldn't need to parsesys.argvdirectly. However, the logic defined for your parser is different from your handling ofsys.argv.