如果沒有參數傳遞給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