使用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
的正则表达式匹配?
答案 0 :(得分:3)
它与argparse
,regex和Python都不相关。是您的终端进行外壳扩展,甚至在执行Python解释器之前就已经发生了。
您应该使用引号,例如./prog.py -a "*"
答案 1 :(得分:0)
这不是Python中的正则表达式匹配,而是您的shell将*
扩展到与该通配符匹配的文件列表。这是类Unix系统中外壳程序的默认行为(不是Windows,这是程序负责的行为),您无法从程序中避免这种情况。如果您不希望外壳程序执行此操作,则需要引用参数("*"
)或对其进行转义(\*
)。