对argparse参数禁用正则表达式

时间:2019-09-05 08:07:23

标签: python shell

使用argparse模块,是否可以禁用对命令行参数中的正则表达式的识别?

例如,如果我有一个代码,例如

#!/usr/bin/python3

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-a", "--arg", dest = "arg", nargs = 1, default = None)

args = parser.parse_args()

如果有人以./prog.py -a *的身份运行此程序,则args.arg将是一个包含当前工作目录中文件的列表,而不是仅包含'*'的列表。 / p>

有没有办法禁用argparse的正则表达式匹配?

2 个答案:

答案 0 :(得分:3)

它与argparse,regex和Python都不相关。是您的终端进行外壳扩展,甚至在执行Python解释器之前就已经发生了。

您应该使用引号,例如./prog.py -a "*"

答案 1 :(得分:0)

这不是Python中的正则表达式匹配,而是您的shell将*扩展到与该通配符匹配的文件列表。这是类Unix系统中外壳程序的默认行为(不是Windows,这是程序负责的行为),您无法从程序中避免这种情况。如果您不希望外壳程序执行此操作,则需要引用参数("*")或对其进行转义(\*)。