0

コマンドラインからPythonプログラムに入力引数として文字列を渡そうとしています。つまり$python parser_prog.py <pos1> <pos2> --opt1 --opt2、argparseを使用してこれらを解釈しています。もちろん、メタ文字が含まれている場合、これらは最初にシェルによって解釈されるため、引用する必要があります。

これは機能しているようです。文字列は文字どおりに渡され、\*?! 文字:

$ python parser_prog.py 'str\1*?' 'str2!'

ただし、「-」(ハイフン) 文字を通過しようとすると、マスクできないようです。無効なオプションとして解釈されます。

$ python parser_prog.py 'str\1*?' '-str2!'

一重引用符と二重引用符を試しましたが、Python がこれを生の文字列として解釈することを確認する方法はありますか? (私はまだインタープリターに参加していません。これはシェル コマンド ライン上にあるため、のような Pythonic 式は使用できませんr'str1')

ヒントをありがとう!

4

1 に答える 1

2

あなたが言ったように、Python はシェルによって処理された後にのみ文字列を認識します。コマンドライン引数'-f'-fは呼び出されたプログラムと同じように見え、それらを区別する方法はありません。argparseそうは言っても、オプションの終わりを示す引数をサポートしていると思い--ます。これ以降はすべて位置引数として扱われます。

于 2013-07-24T20:44:33.307 に答える