如何检查命令行中的参数是否已设置?

Ric*_*nop 35 python

我可以像这样调用我的脚本:

python D:\myscript.py 60
Run Code Online (Sandbox Code Playgroud)

在剧本中我可以做到:

arg = sys.argv[1]
foo(arg)
Run Code Online (Sandbox Code Playgroud)

但是我如何测试参数是否已在命令行调用中输入?我需要做这样的事情:

if isset(sys.argv[1]):
    foo(sys.argv[1])
else:
    print "You must set argument!!!"
Run Code Online (Sandbox Code Playgroud)

Kat*_*iel 45

不要sys.argv用于处理命令行界面; 有一个模块可以做到这一点:argparse.

你可以通过传递required=True来标记一个参数add_argument.

import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("foo", ..., required=True)
parser.parse_args()
Run Code Online (Sandbox Code Playgroud)

  • 如果需求非常简单,使用`sys.argv`实际上是否存在*错误*? (9认同)
  • -1提供一个在Richard的情况下不起作用的例子.如果`foo`是'60`那么它将是一个位置,你不能将`required = True`添加到位置. (3认同)

kha*_*hik 44

len(sys.argv) > 1


chr*_*ris 24

if len(sys.argv) < 2:
    print "You must set argument!!!"
Run Code Online (Sandbox Code Playgroud)


DNS*_*DNS 6

如果您使用的是Python 2.7/3.2,请使用该argparse模块.否则,请使用该optparse模块.该模块负责解析命令行,您可以检查位置参数的数量是否与您期望的一致.


小智 6

if len(sys.argv) == 1:
   print('no arguments passed')
   sys.exit()
Run Code Online (Sandbox Code Playgroud)

这将检查是否传递了任何参数。如果没有参数,它将退出脚本,而不运行它的其余部分。