如果没有参数传递给python脚本,我该如何打印帮助信息?python空参数
#!/usr/bin/env python
import sys
for arg in sys.argv:
if arg == "do":
do this
if arg == ""
print "usage is bla bla bla"
什么,我缺少的是if arg == ""
线,我不知道该如何表达:(
如果没有参数传递给python脚本,我该如何打印帮助信息?python空参数
#!/usr/bin/env python
import sys
for arg in sys.argv:
if arg == "do":
do this
if arg == ""
print "usage is bla bla bla"
什么,我缺少的是if arg == ""
线,我不知道该如何表达:(
if len(sys.argv)<2:
程序的名称总是sys.argv中[0]
if len(sys.argv) == 1:
# Print usage...
sys.argv的第一个元素始终是脚本本身的名称或空字符串。如果sys.argv只有一个元素,那么肯定没有参数。
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
'if'后面跟'for'对我来说感觉有点多余。我添加了你的答案的变体,以显示我的意思 – 2010-02-03 19:44:37
基于Noctis Skytower塔的回答
import sys
args = sys.argv[1:]
for arg in args:
if arg == "do":
# do this
if not args:
print "usage is bla bla bla"
你的第二个例子存在问题。如果你不想运行,你必须在进入'else'块之前中断。 – 2010-02-03 20:46:35
@Noctis Skytower。是的,我会删除它 – 2010-02-03 20:55:23
正如其他人所说,你可以检查是否有任何ARGS被做传递:
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
然而,是一个名为OptParse的Python模块,它是为了在运行时解析命令行参数而明确开发的一个脚本。我会建议看看这个,因为它更符合“符合标准”(如在Python社区中的命令行解析的预期和接受方法)。
“使用optparse”是非平凡程序的正确答案。 – 2010-02-03 20:49:13
我建议你使用的lib optparse [1],更优雅:d
[1]更强大的命令行选项解析器< http://docs.python.org/library/optparse.html>
为optparse +1! – jathanism 2010-02-04 02:13:48
下面是一个非常Python化解决方式的问题,因为它故意产生的尝试中一个异常..除了:
import sys
try:
sys.argv[1:] // do sth with sys,argv[1:]
except IndexError:
print "usage is..."
sys.exit()
import argparse
def parse_args():
parser = argparse.ArgumentParser(
add_help=True,
)
# your arguments here
if len(sys.argv) == 1:
parser.print_help()
sys.exit(0)
else:
options = parser.parse_args()
return options
我刚才所说的'== 1'但它是完全一样的。 – 2010-02-03 18:01:39