问题
I am using python argparse with the following argument definition:
parser.add_argument('path', nargs=1, help='File path to process')
But when I enter my command with a wildcard argument, argparse globs all the file paths and terminates with an error.
How do I get argparse not to glob the files?
回答1:
How do I get argparse not to glob the files?
You don't.
You get the shell to stop globbing.
However. Let's think for a moment.
You're saying this in your code
parser.add_argument('path', nargs=1, help='File path to process')
But you are actually providing wild-cards when you run it.
One of those two is wrong. Either stop providing wild-cards at run time or fix argparse to allow multiple filenames.
回答2:
The shell is expanding the wildcard argument before argparse gets a chance to see it. Put quotes around the wildcard argument to prevent the shell from expanding it.
You could later perform the wildcard expansion with glob.glob.
回答3:
The globbing is done by your shell, not by the argparse module. print sys.argv at the beginning and you will see what argparse gets as input.
来源:https://stackoverflow.com/questions/7366791/stop-argparse-from-globbing-filepath