2

私は自分のプログラムを次のように使用したいと思います:

pythonScript -f ファイル名

しかし、-f を忘れた場合でも、ファイル名を取得したいと考えています。

したがって、この「pythonScriptファイル名」も機能する必要があります(-> args.fileNameまたは例外の処理からファイル名を取得できます)

私はこれが簡単でなければならないことを知っていますが、それを行う方法を見つけることができません。誰でも私を助けることができますか?ありがとう

import argparse
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-f', action='store', dest='fileName',
    default = None, type=str, help='The file name')

try:
    args = parser.parse_args()
except:
    print "xxx"
4

1 に答える 1

3

-f を必須にしたい場合は、argparseでそのようにすることができます。add_argument 関数内に「required = True」を含めるだけです。

必要なオプションは矛盾していることに注意してください。オプションを必須にすることはお勧めしませんが、役立つ場合があります。オプションが指定されていない場合、宛先は None 値のままです(または、指定したデフォルト値が割り当てられます。例では None です)。

編集: あなたの編集を見ただけで、あなたが今何を求めているのか理解できます. optparse は、この IMO をより単純にします。argparse を使用した位置引数のようです。add_argument を使用する必要があります。

argparse にそれをさせる簡単な方法は本当にありません。次のようにして、少し創造的にシミュレートできます。

parser = argparse.ArgumentParser()
parser.add_argument('file', nargs='?')
parser.add_argument('-f', dest='file_opt')
args = parser.parse_args()
if args.file_opt:
    args.file = args.file_opt

基本的に、ファイル オプションが指定されている場合は、位置引数が上書きされます。

于 2011-08-26T15:28:21.420 に答える