私はこの小さな活動を完了するのに苦労しました。実験をしましたが、結果が出ませんでした。
要件:
test2.py [-c/-v] -f
使用法または規則:
-c(比較)は2つのパラメーターを取ります。
-v(検証)は1つのパラメーターを取ります。
これら2つのいずれかが存在する必要がありますが、両方が存在することはできません。
- -fは必須パラメーター(出力ファイル名)です。
出力:
以下に示すように、目的の出力を得ることができます。
kp@kp:~/Study/scripts$ ./test.py -c P1 P2 -f p
kp@kp:~/Study/scripts$ ./test.py -v P1 -f p
kp@kp:~/Study/scripts$ ./test.py -v P1
usage: test.py <functional argument> <ouput target argument>
test.py: error: argument -f/--file is required
kp@kp:~/Study/scripts$ ./test.py -c P1 P2
usage: test.py <functional argument> <ouput target argument>
test.py: error: argument -f/--file is required
kp@kp:~/Study/scripts$
問題は次のとおりです。
test.py -h
、、
1を使用する場合、出力には、-c / -vのいずれかが必須であるが、両方ではないことが示されません。これは、すべての引数がオプションであることを示しています。
2.出力は、オプションの引数の下に-fオプションを示しますが、これは正しくありません。-fは必須の引数であり、外部に表示したい-オプションの引数。
-hオプションの出力がよりユーザーフレンドリーになるようにスクリプトを変更する方法(外部検証なし)
usage: test.py <functional argument> <ouput target argument>
Package Compare/Verifier tool.
optional arguments:
-h, --help show this help message and exit
-f outFileName, --file outFileName
File Name where result is stored.
-c Package1 Package2, --compare Package1 Package2
Compare two packages.
-v Package, --verify Package
Verify Content of package.
kiran@kiran-laptop:~/Study/scripts$
コード:
私は出力を達成するために以下のコードを使用しています、
#!/usr/bin/python
import sys
import argparse
def main():
usage='%(prog)s <functional argument> <ouput target argument>'
description='Package Compare/Verifier tool.'
parser = argparse.ArgumentParser(usage=usage,description=description)
parser.add_argument('-f','--file',action='store',nargs=1,dest='outFileName',help='File Name where result is stored.',metavar="outFileName",required=True)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-c','--compare',action='store',nargs=2,dest='packageInfo',help='Compare two packages.',metavar=("Package1","Package2"))
group.add_argument('-v','--verify',action='store',nargs=1,dest='packageName',help='Verify Content of package.',metavar='Package')
args = parser.parse_args()
if __name__ == "__main__":
main()