2017-02-20 8 views
1

私はPythonのすばらしいCmdライブラリを使用してターミナルゲームを作っています。しかし、どうにかしてargparseコードを入れることができれば私は不思議でした。私のcmd.Cmd()クラスから 'args'を扱うためにargparseを使うのと同じです。 これを行うために、私はargparseが手作業で引数を渡す方法があることを本当に望んでいました。私はドキュメントをすくい取ったが、そのようなことは気付かなかった。argparseに手動でコマンドを渡しますか? | Python 2.7

+0

[ 'parse_args(引数)'](https://docs.python.org/2/library/argparse.html#argparse.ArgumentParser.parse_args)のように? – dhke

+0

@dhkeちょうどそのような文字列を渡すことはできますか? – Cyanite

+0

リンクされたドキュメントを参照してください。彼らは全体を通してそれを使用します。 – glibdud

答えて

3

parse_args()は、オプションの引数argsを解析するリスト(またはタプル)を指定します。 (引数なし)parse_args()parse_args(sys.argv[1:])と等価である:スクリプトで

parse_args()は、典型的には、引数なしで呼び出され、ArgumentParserが自動的sys.argvからのコマンドライン引数を決定します。

あなたはタプルを持っていないが、単一の文字列は、シェルのような引数の分割は​​が使用を印刷し、メッセージを助けるだけでなく、exit()になることをshlex.split()

>>> shlex.split('"A" B C\\ D') 
['A', 'B', 'C D'] 

注意を使用して達成することができる場合致命的なエラー。あなたは、エラーを自分で処理するために.error()を上書きすることができます。

class ArgumentParserNoExit(argparse.ArgumentParser): 
    def error(self, message): 
     raise ValueError(message) # or whatever you like 
+1

ご協力ありがとうございます。 ^〜^ – Cyanite

+0

これを回答する他の人のためのサイドノート:無効なコマンド( '--help'の代わりに 'help'など)を入力すると、argparseはエラー(視覚的)を返し、エラーが発生します。だからあなたがエラーを 'except'しても、ユーザーは引き続きエラーを見るでしょうが、スクリプトはクラッシュしません。 – Cyanite

+0

@Cyanite 'argparse'も致命的なエラーで' exit() 'します。パーサーで '.error()'をオーバーライドして修正してください。 – dhke

関連する問題