【发布时间】:2015-04-13 07:27:57
【问题描述】:
我已经浏览了sys 文档,但是我仍然不清楚。我在 stackoverflow 上寻找了一些类似的问题,但我没有找到任何有用的东西(显然任何参考都值得赞赏!)。
我想创建一个脚本——比如foo.py——我想在其中传递 3 到 6 个参数:
$ python foo.py arg1 arg2 arg3
在任何情况下都必须给出前 3 个参数;如果没有传递任何参数,则最后 3 个参数用于具有默认参数值的函数。
问题是我该怎么做?到目前为止,我正在考虑编写类似以下内容的内容foo.py(这是一个简单的示例,仅用于提供具体的内容来支持我的问题):
import sys
def example(credit_mom, credit_dad, debt_mom, debt_dad = 1000,
salary = 2000, bonus = 0):
total_gain = salary + credit_dad + credit_mom + bonus
total_loss = debt_dad + debt_mom
return total_gain - total_loss
if __name__ == '__main__':
if len(sys.argv) < 4:
sys.exit('Need at least 3 arguments. The order is as follows:\n\
1.credit_mom;\n\
2.credit_dad;\n\
3.debt_mom;\n\
4.others')
else:
sys.exit(example(sys.argv[1],
sys.argv[2],
sys.argv[3],
sys.argv[4],
sys.argv[5],
sys.argv[6]))
如果我运行这个脚本,我显然会得到一个IndexError 异常:
$ python foo.py 110 110 220
Traceback (most recent call last):
File "foo.py", line 19, in <module>
sys.argv[4],
IndexError: list index out of range
【问题讨论】:
-
我建议你使用argparse(和here is the tutorial)。省去您手动检查参数是否存在的麻烦。
-
谢谢!我立即开始学习教程
标签: python command-line-arguments argparse sys