Reedinationer
Reedinationer

Reputation: 5774

argparse error with parsing required arguments

I have a script saved as workspace.py

import argparse
import os

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('title', type=str, help="Will be displayed as the title")
    parser.add_argument('-f', '--folder', help='Point to the folder you want to read from (defaults to current folder in command prompt)', type=str, default=os.getcwd())
    args = parser.parse_args()
    print(args)
    someFunction(args.folder, args.title)

Which I call from terminal with:

workspace.py myTitle

Resulting in the error

workspace.py: error: the following arguments are required: title

I have no idea why this is happening because I supply "myTitle" in the terminal. If I specify a default= for the title argument it works perfectly with that value. The part that is throwing me is it doesn't even get to the print(args) so I cannot see what the program thinks is what, but instead fails at args = parser.parse_args()

I tried to even redo the exact example at: https://docs.python.org/2/howto/argparse.html#introducing-positional-arguments (copied below)

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo", help="echo the string you use here")
args = parser.parse_args()
print args.echo

Running

workspace.py hello

Results in (after adding parenthesis to the print for 3.X)

workspace.py: error: the following arguments are required: echo

Is there something I'm missing? Why does it not just print "hello"? Is there some Python 3 specific syntax I'm missing or something?

Upvotes: 0

Views: 2311

Answers (1)

Reedinationer
Reedinationer

Reputation: 5774

I've gotten it to work if I run python workspace.py someString instead of workspace.py someString. I do not understand why this version works, since command prompt obviously recognizes it as Python and runs it correctly until args = parser.parse_args(). There were no errors like 'workspace.py' is not recognized as an internal or external command, operable program or batch file. There was no problem importing modules either. Consider the below command prompt session if you are running into a similar error. Maybe you will simply have to include python in your commands like I have to...

C:\Users\rparkhurst\PycharmProjects\Workspace>workspace.py MyTitle
usage: workspace.py [-h] [-f FOLDER] title
workspace.py: error: the following arguments are required: title

C:\Users\rparkhurst\PycharmProjects\Workspace>python workspace.py MyTitle
Namespace(folder='C:\\Users\\rparkhurst\\PycharmProjects\\Workspace', title='MyTitle')

Upvotes: 1

Related Questions