如果没有参数传递给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 == ""
行,我不知道如何表达:(
答案 0 :(得分:21)
if len(sys.argv) == 1:
# Print usage...
sys.argv的第一个元素始终是脚本本身的名称或空字符串。如果sys.argv只有一个元素,那么一定没有参数。
答案 1 :(得分:13)
if len(sys.argv)<2:
程序的名称始终位于sys.argv [0]
中答案 2 :(得分:6)
正如其他人所说,你可以通过以下方式检查是否传递了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社区中预期和接受的命令行解析方法)。
答案 3 :(得分:4)
以下是解决问题的非常Pythonic方法,因为它故意在try中生成异常..除了:
import sys
try:
sys.argv[1:] // do something with sys.argv[1:]
except IndexError:
print "usage is..."
sys.exit()
答案 4 :(得分:1)
#!/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"
答案 5 :(得分:1)
基于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"
答案 6 :(得分:1)
我建议你使用lib optparse [1],更优雅:D
[1]更强大的命令行选项解析器&lt; http://docs.python.org/library/optparse.html&gt;
答案 7 :(得分:0)
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