6

我正在使用带有以下参数定义的python argparse:

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

但是当我输入带有wildcard参数的命令时,argparse会覆盖所有文件路径并以错误终止。

我怎样才能argparse不去 glob 文件?

4

3 回答 3

10

argparse在有机会看到它之前,shell 正在扩展通配符参数。在通配符参数周围加上引号以防止 shell 扩展它。

您可以稍后使用glob.glob执行通配符扩展。

于 2011-09-09T20:00:23.150 回答
8

如何让 argparse 不全局化文件?

你没有。

你让 shell 停止 globbing。

然而。让我们想一想。

你在你的代码中说这个

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

但是当你运行它时,你实际上是在提供通配符。

这两个之一是错误的。在运行时停止提供通配符或修复 argparse 以允许多个文件名。

于 2011-09-09T20:01:52.900 回答
4

globbing 由您的 shell 完成,而不是由 argparse 模块完成。在开头打印sys.argv,你会看到 argparse 得到什么作为输入。

于 2011-09-09T19:59:43.607 回答