任何人都可以告訴我如何爲python腳本的參數編寫條件嗎?我想它打印「ARGUMENT2進入了」如果有第二個命令行運行參數,如:有條件的Python腳本參數
python script.py argument1 argument2
,並打印「沒有第二個參數」如果不帶命令行參數運行,像這樣:
python script.py argument1
這可能嗎?
任何人都可以告訴我如何爲python腳本的參數編寫條件嗎?我想它打印「ARGUMENT2進入了」如果有第二個命令行運行參數,如:有條件的Python腳本參數
python script.py argument1 argument2
,並打印「沒有第二個參數」如果不帶命令行參數運行,像這樣:
python script.py argument1
這可能嗎?
import sys
if len(sys.argv)==2: # first entry in sys.argv is script itself...
print "No second argument"
elif len(sys.argv)==3:
print "Second argument"
接着塊應該是不言而喻的
$ ./first.py second third 4th 5th
5
$ cat first.py
#!/usr/bin/env python
import sys
print (len(sys.argv))
'len(sys.argv)-1'可能更合適,因爲如果沒有參數運行的腳本將返回1 –
有很多答案,這取決於你想要什麼做的,你是多大的靈活性,可能需要。
的最簡單的解決方案是檢查變量sys.argv
,這是一個包含所有的命令行參數的列表。 (它還包含腳本的名稱作爲第一個元素。)要執行此操作,只需查看len(sys.argv)
並根據其值更改行爲。
然而,這往往不是人們期待的命令行程序做的不夠靈活。例如,如果你想要一個標誌(-i
,--no-defaults
,...),那麼如何編寫一個只有sys.argv
並不明顯。同樣的論據(--dest-dir="downloads"
)。因此,人們寫了很多模塊來簡化這種參數解析。
內置的解決方案是,這是強大的,很容易使用的,但不是特別簡潔。
一個巧妙的解決方案是plac
,它檢查main
函數的簽名以試圖推斷命令行參數應該是什麼。
這是有關這取決於你在哪裏與此打算許多其他職位,所以我會放四個位置:
What's the best way to grab/parse command line arguments passed to a Python script?
How can I process command line arguments in Python?
How do I format positional argument help using Python's optparse?
而是直接的答案從Python文檔你的問題:
sys.argv - 傳遞給Python腳本的命令行參數列表。 argv [0]是腳本名稱(與操作系統有關,無論這是否是完整的路徑名)。如果使用解釋器的-c命令行選項執行該命令,argv [0]被設置爲字符串'-c'。如果沒有腳本名稱被傳遞給Python解釋器,argv [0]是空字符串。 要循環訪問標準輸入或命令行上給出的文件列表,請參閱文件輸入模塊。
當然這是可能的。你有沒有嘗試過自己呢? –
提示:'len(sys.argv)' –
@Jimmy很簡單,python帶有電池,還有一個模塊,argparse。閱讀文檔。 –