1

pytonを使用して新しいCLIを作成し、cmdおよびargparseライブラリを使用しています。引数を設定し、長いテキストオプションを指定して呼び出すと、それがテキストであると認識されず、例外がスローされます。

これが私が引数を使う方法です:

WACP:~ cli$ add -t group -n NameForNewGroup -desc 'Description for new group' -c 2

応答は次のとおりです。

unrecognized arguments: - t   g r o u p   - n   N a m e F o r N e w G r o u p   - d e s c   ' D e s c r i p t i o n   f o r   n e w   g r o u p '   - c   2

ここで私が引数を追加する方法:

self.parser.add_argument('-t', '--type',
                                 dest='type',
                                 help=Language.MSG_ADD_TYPE_HELP,
                                 action='store',
                                 default='device'
)
self.parser.add_argument('-c', '--config',
                                 dest='config',
                                 help=Language.MSG_ADD_GROUP_HELP,
                                 action='store',
                                 default=0
)
self.parser.add_argument('-n', '--name',
                                 dest='name',
                                 help=Language.MSG_ADD_NAME_HELP,
                                 action='store',
                                 default='New Device'
)
self.parser.add_argument('-desc', '--description',
                                 dest='description',
                                 help=Language.MSG_ADD_DESC_HELP,
                                 type=complex,
                                 action='store',
                                 default='Default description for device or group included in configuration values')

私はargparseのドキュメントを調べましたが、それがどのようになるかを構成していませんでした。

この長いテキスト解析を処理して機能させる必要があります。

誰かがそれを解決するアイデアを持っていますか?

4

3 に答える 3

1

私のために働きます。最小限のテストケースを作成できるかもしれませんか?Pythonのどのバージョンですか?使用していて、使用argparseしていないのoptparseですか?parse_args()正しいオブジェクトを呼び出していますか?の出力は-h何ですか?

import argparse
p = argparse.ArgumentParser()
p.add_argument('-t', '--type',
               dest='type')
p.add_argument('-c', '--config',
               dest='config')
p.add_argument('-n', '--name',
               dest='name')
p.add_argument('-desc', '--description',
               dest='description')
print(p.parse_args())

実行時:

$ python test.py -t group -n NameForNewGroup-desc'新しいグループの説明'-c2
Namespace(config = '2'、description ='新しいグループの説明'、name ='NameForNewGroup'、type ='group')
$ python test.py -h
使用法:test.py [-h] [-t TYPE] [-c CONFIG] [-n NAME] [-desc description]

オプションの引数:
  -h、-helpこのヘルプメッセージを表示して終了します
  -t TYPE、-type TYPE
  -c CONFIG、-config CONFIG
  -n NAME、-name NAME
  -説明説明、-説明説明

ノート

  1. 通常、短い( eg)引数-tと長い(eg --type)引数がある場合、短い引数はそれぞれ1文字である必要があります。-desc少し変です。

  2. あなたはしたくないtype=complex。このcomplex型は、などの複素数に使用され1+0.5jます。

  3. デフォルトのアクションはですstoreので、省略できます。

于 2013-02-20T15:08:14.257 に答える
0

通常、longoptionsの前に2つのハイペン「-」を付ける必要があります。多分これが問題ですか?「-」だけでも機能するかどうかわからない。

于 2013-02-20T15:02:28.747 に答える
0

お元気ですかparse_args?応答の間隔は、または同等の処理- t g r o u p - n N...を行ったことを示しています。p.parse_args(list('-t group -n N...'))各文字は個別の引数文字列です。

または多分あなたはやっていp.parse_args('-t group -n N ...')ます。p.parse_args(['-t','group','-n','N', ...])呼び出しをテストするには、 (文字列のリスト)のようなものにする必要があります。

于 2013-08-08T20:32:13.747 に答える