阻止argparse对文件路径进行扩展

6 投票
3 回答
5352 浏览
提问于 2025-04-17 01:56

我在用Python的argparse库定义参数,代码如下:

parser.add_argument('path', nargs=1, help='File path to process')

但是当我输入带有通配符的命令时,argparse会把所有的文件路径都展开,然后报错。

我该怎么做才能让argparse不去展开这些文件呢?

3 个回答

4

文件名匹配是由你的命令行工具(也就是shell)来处理的,而不是由argparse这个模块来处理的。你可以在一开始打印一下 sys.argv,这样你就能看到argparse接收到的输入是什么了。

12

在你使用 argparse 之前,系统的命令行会先处理通配符参数。为了防止命令行处理这个通配符,你可以把它放在引号里。

之后你可以用 glob.glob 来进行通配符的处理。

8

我该怎么让argparse不去处理文件名中的通配符呢?

你不能。

你需要让命令行停止处理通配符。

不过,先想一想。

你在代码中写的是这个

parser.add_argument('path', nargs=1, help='File path to process')

但实际上你在运行的时候提供了通配符。

这两者中有一个是错的。要么在运行时停止使用通配符,要么修改argparse以允许多个文件名。

撰写回答