如何解决Python,argparse:在Windows和Linux上正确处理参数通配符
众所周知,Linux和Windows Shell处理“ *”和“?”之类的通配符。不一样。我的目标是编写简单的跨平台应用程序,并且希望它与通配符一起使用。我看到的可以实现此目标的唯一“美丽”方法是通过将argparse.ArgumentParser子类化并重载parse_args方法来扩展所有“ *”和“?”。由glob.glob手动进行。但我想知道为什么ArgumentParser尚未实现这种选项。也许有些缺点我没注意到,也许还有其他一些常用方法?
解决方法
我不确定Windows,但是在Bash中,*
和?
在程序看到它们之前被外壳程序扩展了。它们不会扩展的唯一方法是,如果目录中没有任何匹配的文件名。这样可以确保用户无论使用什么程序都可以始终使用通配符。
换句话说,通配符是shell的功能。您的程序完全无法控制它们。
编辑:实际上,在查看Bash manual之后,如果用户做了一些额外的工作, 就有可能看到通配符。为防止通配符扩展,您可以告诉用户使用反斜杠来转义通配符(\*
)或将单词加引号('myfile.*'
)。然后,您可以根据需要使用glob
库处理通配符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。