# 3.4.Arguments parser

* 使用命令列包裝程式有利於程式的溝通及使用
* Python的命令列library:
  * getopt
  * optparse (已被棄用)
  * argparse (本篇所記錄的)
* 1.概念
* 2.基本用法
  * 運行這個腳本而沒有給與任何參數時就不會顯示任何東西至標準輸出畫面上
  * 提供了最簡單的help
    * code:

      ```
        import argparse
        parser = argparse.ArgumentParser(
            description='''It's a CS API test tool''',
            epilog="""All's well that ends well.""")
        args = parser.parse_args()
      ```
    * result:

      ![](https://1184108162-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8SFgkeUaGo4vl-%2F-M4M0HrDfjWeZX2tGCNv%2F-M4M0QK7PJmTkWDYssaN%2F%E6%9C%AA%E5%91%BD%E5%90%8D3.jpg?generation=1586302952910594\&alt=media)
* 3.位置參數
  * 位置參數是必備的, 輸入的參數會依照順序mapping到args中, 也會檢查參數數量是否正確.
    * code:

      ```
        import argparse
        parser = argparse.ArgumentParser(
            description='''It's a CS API test tool''',
            epilog="""All's well that ends well.""")
        parser.add_argument('ip', help="Input CS's IP")
        parser.add_argument('token', help="Input CS's token")
        parser.add_argument('mac', help="Input CG's MAC")
        args = parser.parse_args()

        print('ip = ' + args.ip)
        print('token = ' + args.token)
        print('mac = ' + args.mac)
      ```
    * result: ![](https://1184108162-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8SFgkeUaGo4vl-%2F-M4M0HrDfjWeZX2tGCNv%2F-M4M0QK9A081laOT1HN2%2F%E6%9C%AA%E5%91%BD%E5%90%8D52.jpg?generation=1586302952677047\&alt=media)
* 4.選項參數
  * 使用者依需求指定填入的參數
  * 即使全部都沒填參數, 程式也不會阻擋, 但是後面要自行加入判斷參數是否存在
    * code:

      ```
        import argparse
        parser = argparse.ArgumentParser(description='''It's a CS API test tool''', epilog="""All's well that ends well.""")
        parser.add_argument('--ip', help="Input CS's IP")
        parser.add_argument('--token', help="Input CS's token")
        parser.add_argument('--mac', help="Input CG's MAC")
        args = parser.parse_args()

        if not (args.ip is None):
            print('ip = ' + args.ip)
        if not (args.token is None):
            print('token = ' + args.token)
        if not (args.mac is None):
            print('mac = ' + args.mac)
      ```
    * result:
* 5.結合位置與選項參數
* 5.Short options
