cmd
モジュールを使用してCLIタイプのインターフェイスを提供する単純なPythonアプリケーションを作成しています。 CLIが提供するコマンドには、さまざまなパラメータリストがあります。各コマンドハンドラは、引数を含む行の部分を含む文字列引数を受け取ります。私はshlex.split
を使ってそれらをタプルにトークン化する予定です。その後、私は、文字列のタプルを取得し、それらが整形式であることを検証し、きれいに指定された数値型のタプルに変換する最もPythonの方法を探しています。Pythonタプルの文字列を動的に指定された型に変換するにはどうすればよいですか?
例:私は3つの引数を取る関数foo
有する:第一に、ディスク上のファイルへのパスを、第二の浮動小数点値であり、第3の整数である、のように:
foo /home/jason/file.bin 123.456 123456
これは、Cのsscanf()
と書式文字列"%s %f %d"
を使用するのと同じようなものです(このアプローチに固有の空白処理の問題を理解しています;これは単なるイラストです)。
私はint()
、float()
などを呼び出し、例外を適切にキャッチするハンドラ関数ごとに定型コードを書くことでこれを達成できることを知っています。これを行うためのよりクリーンな方法があるはずです。
これはまさに私が探していたアプローチのタイプです。私はそれが素晴らしい解決策だと思う。 –
1つのコメント:私はあなたの意図を誤解している可能性がありますが、 'parse_args'の最後の行で' RULE'が小文字であると仮定し、 'rule'リストを反復して各変換関数を対応する要素'args'リスト内の-wという文字列です。 xrange(len(rule))のiに対して、 'map()'は最初の引数のためにただ一つの関数しか持たないので、代わりに、リストの理解を使っていました: 'return [rule [i](args [i] )] '' –