Python 参数解释器
有没有正确的方法来读取 python 应用程序的参数?
示例:
python game.py -server 127.0.0.1 -nick TheKiller1337
是否有正确的方法来解释这些论点? 现在我有一个带有一些 if 的 while 循环。但它变得相当大。我应该做一个通用类来读取参数,还是已经在 python 中实现了?
Is there a correct way to read the arguments to a python application?
Example:
python game.py -server 127.0.0.1 -nick TheKiller1337
Is there a correct way of interpreting these argument?
As it is now I have a while-loop with some ifs. But it is getting rather large. Should I do a general class for argument reading, or is this already implemented in python?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用argparse,optparse 或 getopt。
这三个都在标准库中。
我推荐argparse。它是三者中最新的,而且在我看来也是最容易使用的。它是在 2.7 版本中引入的。
如果使用较旧的 Python 版本,我建议使用 optparse (或 获取版本 2.5 和 2.6 的 argparse 来自 pypi)
Use argparse, optparse or getopt.
All three are in the standard library.
I recommend argparse. It is the newest of the three, and is IMO the easiest to use. It was introduced in version 2.7.
If using an older Python version, I would recommend optparse (or get argparse for version 2.5 and 2.6 from pypi)
如果您使用的是 v2.7 或更高版本,则可以使用
argparse< /代码>
。该文档有示例。
对于早期的 Python,
optparse
通常是最佳选择。如果您想编写,另一种选择是
getopt
'C'。对于其中的每一个,您都必须将您的参数列表更改为更常规的。任一:
If you're using v2.7 or newer, you can use
argparse
. The documentation has examples.For earlier Pythons,
optparse
is usually the way to go.The alternative is
getopt
, if you're rather be writing 'C'.For each of these you would have to change your argument list to more conventional. Either of:
python game.py --server 127.0.0.1 --nick TheKiller1337
python game.py -s 127.0.0.1 -n TheKiller1337
您可以使用 getopt,只需对初始计划稍作更改即可。它会像:
You can use getopt with only slight change to your initial plans. It would be like:
我更喜欢 optparse,因为它在 2.6 中受支持,并且它有一个漂亮的界面,自动生成帮助文本,并且支持其他参数,而不仅仅是参数。
就像这样:
你明白了。
I prefer
optparse
, because it is supported in 2.6 and because it has a nice interface, automatically generates help texts, and supports additional parameters, not just arguments.Like this:
You get the idea.