python空参数

sfs*_*fsd 18 python arguments parameter-passing

如果没有参数传递给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"
Run Code Online (Sandbox Code Playgroud)

我缺少的是if arg == ""我不知道如何表达的行:(

Jos*_*ght 23

if len(sys.argv) == 1:
    # Print usage...
Run Code Online (Sandbox Code Playgroud)

sys.argv的第一个元素始终是脚本本身的名称或空字符串.如果sys.argv只有一个元素,那么一定没有参数.

http://docs.python.org/library/sys.html#sys.argv


AJ.*_*AJ. 14

if len(sys.argv)<2:
Run Code Online (Sandbox Code Playgroud)

程序的名称始终在sys.argv [0]中

  • 我会说'== 1`但它们都是一样的. (2认同)

Mik*_*cic 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"
Run Code Online (Sandbox Code Playgroud)

但是,有一个名为OptParse的Python模块是为运行脚本时解析命令行参数而显式开发的.我建议调查一下,因为它更符合"标准"(因为它是Python社区中预期和接受的命令行解析方法).


小智 5

以下是解决问题的一种非常 Pythonic 的方法,因为它故意在 try .. except 中生成异常:

import sys

try:   
   sys.argv[1:] // do something with sys.argv[1:]  
except IndexError:  
   print "usage is..."
   sys.exit()
Run Code Online (Sandbox Code Playgroud)