如何在Python中使用getopt/optarg?如何在Python中使用getopt/OPTARG?如果提供了太多的論據(9),如何轉移論證?
回答
這是如何我這樣做,我通常使用相同的例子基本模板:
import sys
import getopt
try:
opts, args = getopt.getopt(sys.argv[1:], 'm:p:h', ['miner=', 'params=', 'help'])
except getopt.GetoptError:
usage()
sys.exit(2)
for opt, arg in opts:
if opt in ('-h', '--help'):
usage()
sys.exit(2)
elif opt in ('-m', '--miner'):
miner_name = arg
elif opt in ('-p', '--params'):
params = arg
else:
usage()
sys.exit(2)
我不認爲有任何9參數限制。
您是否試過閱讀模塊getopt
(http://docs.python.org/library/getopt.html?highlight=getopt#module-getopt)的python文檔?它提供了一個如何使用getopt
的簡單示例。換班的含義是什麼意思?如果您想檢查用戶沒有使用多於9個參數,則可以檢查sys.argv
列表的長度,該列表包含傳遞給該腳本的所有選項/參數。第一個元素是被調用的腳本的名稱,所以長度總是至少爲1。你可以這樣做:
if len(sys.argv) > 10
print('Too many arguments.')
谷歌搜索會有幫助。在標準庫看看getopt和argparse模塊:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
然後運行它的預期:
$ prog.py -h
usage: prog.py [-h] [--sum] N [N ...]
Process some integers.
positional arguments:
N an integer for the accumulator
optional arguments:
-h, --help show this help message and exit
--sum sum the integers (default: find the max)
當與適當的參數運行,它打印或者總和或最大的命令行整數:
$ prog.py 1 2 3 4
4
$ prog.py 1 2 3 4 --sum
10
這是直接從標準庫。
Argparse及其教程非常棒。 – Noumenon 2015-07-11 19:38:35
對不起,但我建議你在深入'argparse'之前尋找'docopt' ... – flaschbier 2017-03-23 11:56:31
- 1. 太多的論據如果聲明Bash
- 2. 如何提供論證作爲聯盟?
- 3. 被提供了太多的論據;預計1(Perl的)
- 4. 如何在jive論壇中提供自定義身份驗證?
- 5. 無論如何要證明布爾代數理論9和10?
- 6. 無論如何,從os.walk提供進度?
- 7. Python getopt太多爭論
- 8. 如何使回覆評論引用評論的ID在論壇
- 9. 如何使用評論框評論框使用評論系統
- 10. 如何使用python編寫excel評論?
- 11. 如果用戶評論太快,就會彈出驗證碼?
- 12. 如何通過論證在java中
- 13. 如何使用Django的評論框架評論評論
- 14. 無論如何,使一個Matlab線對象移動沒有太多的代碼?
- 15. 如何使用python&NLTK提取評論的子主題句子?
- 16. 如何在haml中轉義評論?
- 17. fb:comments - 如何評論評論
- 18. 編程中的理論理論?如何
- 19. 如果我使用CouchDB進行論壇,應該如何管理論壇用戶?
- 20. 如何引用多篇論文在RMarkdown
- 21. Google是否提供任何API來評論用戶評論
- 22. 如果用戶在評論中插入了鏈接,要切斷評論
- 23. 如何使多方論證管在角2.0.0
- 24. 無論如何
- 25. 無論如何要從buzz中提取評論嗎?
- 26. 如何在評論表中提取用戶的第一個評論日期
- 27. Facebook的評論|我如何在發佈前評論評論
- 28. 無論如何在頭文件中使用boost python包裝?
- 29. 如何在Python中使用ruamel.yaml從YAML文件獲取評論?
- 30. 如何檢查用戶是否提交了評論?
「argv」需要是「sys.argv」 – eludom 2015-03-30 13:39:34
您需要從'argv'數組中刪除腳本名稱,例如:arvg [1:]以使此行正常工作: 'opts,args = getopt。 getopt(argv [1:],'m:p:h',['miner =','params =','help']) – 2015-04-14 09:32:16
什麼是usage()函數用於? – nurulhudamustaqim 2016-08-07 21:15:22