jldupont
jldupont

Reputation: 96726

Stop argparse from globbing filepath

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?

Upvotes: 6

Views: 5524

Answers (3)

unutbu
unutbu

Reputation: 879601

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.

Upvotes: 12

S.Lott
S.Lott

Reputation: 391852

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.

Upvotes: 8

rocksportrocker
rocksportrocker

Reputation: 7419

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.

Upvotes: 4

Related Questions