Stop argparse from globbing filepath

2019-02-23 06:50发布

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?

3条回答
再贱就再见
2楼-- · 2019-02-23 07:41

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.

查看更多
趁早两清
3楼-- · 2019-02-23 07:44

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.

查看更多
萌系小妹纸
4楼-- · 2019-02-23 07:47

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.

查看更多
登录 后发表回答