Python,argparse:在windows和linux上正确处理参数通配符

Python,argparse:在windows和linux上正确处理参数通配符,python,cross-platform,wildcard,Python,Cross Platform,Wildcard,众所周知,Linux和Windows shell处理诸如“*”和“?”之类的通配符的方式不同。我的目标是编写简单的跨平台应用程序,我希望它能够使用通配符。我认为实现这一点的唯一“漂亮”方法是通过对argparse.ArgumentParser子类化和重载parse_args方法,以便通过glob.glob手动扩展所有“*”和“?”。但我想知道为什么ArgumentParser还没有实现这样的选项。也许有一些缺点我没有注意到,也许还有一些其他常用的方法?我不确定Windows,但在Bash中,*和

众所周知,Linux和Windows shell处理诸如“*”和“?”之类的通配符的方式不同。我的目标是编写简单的跨平台应用程序,我希望它能够使用通配符。我认为实现这一点的唯一“漂亮”方法是通过对argparse.ArgumentParser子类化和重载parse_args方法,以便通过glob.glob手动扩展所有“*”和“?”。但我想知道为什么ArgumentParser还没有实现这样的选项。也许有一些缺点我没有注意到,也许还有一些其他常用的方法?

我不确定Windows,但在Bash中,
*
在程序看到它们之前就被shell扩展了。如果目录没有任何匹配的文件名,它们就不会被扩展。这可以确保用户无论运行什么程序,通配符都以相同的方式工作

换句话说,通配符是shell特性。你的程序根本无法控制它们


编辑:实际上,在查看之后,如果用户做了一些额外的工作,就可以看到通配符。为了防止通配符扩展,您可以告诉用户使用反斜杠来转义通配符(
\*
),或者将单词放在引号中(
'myfile.*'
)。然后,您可以根据需要处理通配符,可能使用
glob
库。

问题是Windows没有扩展通配符,所以我必须用python来完成。