阻止argparse对文件路径进行扩展
我在用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以允许多个文件名。