私は試していましたoptparse
が、これが私の最初のスクリプトです。
#!/usr/bin/env python
import os, sys
from optparse import OptionParser
parser = OptionParser()
usage = "usage: %prog [options] arg1 arg2"
parser.add_option("-d", "--dir", type="string",
help="List of directory",
dest="inDir", default=".")
parser.add_option("-m", "--month", type="int",
help="Numeric value of the month",
dest="mon")
options, arguments = parser.parse_args()
if options.inDir:
print os.listdir(options.inDir)
if options.mon:
print options.mon
def no_opt()
print "No option has been given!!"
今、これは私がやろうとしていることです:
- オプションに引数が指定されていない場合は、「デフォルト」値が使用されます。つまり
myScript.py -d
、現在のディレクトリのみをリストする-m
か、引数なしで現在の月を引数として取得します。 - 「--month」の場合、引数として 01 から 12 のみが許可されます
- 異なるタスクを実行するために複数のオプションを組み合わせたい、つまり
myScript.py -d this_dir -m 02
-d と -m を個別に実行するのとは異なることを行います。 - スクリプトにオプションが指定されていない場合にのみ、「オプションが指定されていません!!」と出力されます。
これらは実行可能ですか?私は可能性のある答えを求めて doc.python.org サイトにアクセスしましたが、Python の初心者として、ページで迷子になっていることに気付きました。ご協力いただきありがとうございます。前もって感謝します。乾杯!!
更新: 16/01/11
私はまだ何かが足りないと思います。これが私のスクリプトの内容です。
parser = OptionParser()
usage = "usage: %prog [options] arg1 arg2"
parser.add_option("-m", "--month", type="string",
help="select month from 01|02|...|12",
dest="mon", default=strftime("%m"))
parser.add_option("-v", "--vo", type="string",
help="select one of the supported VOs",
dest="vos")
options, arguments = parser.parse_args()
これらは私の目標です:
- オプションなしでスクリプトを実行すると、
option.mon
[ working ]が返されます - -m オプションを指定してスクリプトを実行し、return
option.mon
[ working ]を指定します - -vオプションのみを指定してスクリプトを実行すると、
option.vos
[まったく機能しない]のみが返されます - -m および -v オプションを指定してスクリプトを実行すると、別のことが行われます [まだポイントに到達していません]
-m オプションのみを指定してスクリプトを実行すると、option.mon
最初に印刷され、次にが印刷されますoption.vos
が、これはまったく望ましくありません。誰かが私を正しい方向に向けることができれば、本当に感謝しています。乾杯!!
3回目の更新
#!/bin/env python
from time import strftime
from calendar import month_abbr
from optparse import OptionParser
# Set the CL options
parser = OptionParser()
usage = "usage: %prog [options] arg1 arg2"
parser.add_option("-m", "--month", type="string",
help="select month from 01|02|...|12",
dest="mon", default=strftime("%m"))
parser.add_option("-u", "--user", type="string",
help="name of the user",
dest="vos")
options, arguments = parser.parse_args()
abbrMonth = tuple(month_abbr)[int(options.mon)]
if options.mon:
print "The month is: %s" % abbrMonth
if options.vos:
print "My name is: %s" % options.vos
if options.mon and options.vos:
print "I'm '%s' and this month is '%s'" % (options.vos,abbrMonth)
これは、さまざまなオプションを指定して実行したときにスクリプトが返すものです。
# ./test.py
The month is: Feb
#
# ./test.py -m 12
The month is: Dec
#
# ./test.py -m 3 -u Mac
The month is: Mar
My name is: Mac
I'm 'Mac' and this month is 'Mar'
#
# ./test.py -u Mac
The month is: Feb
My name is: Mac
I'm 'Mac' and this month is 'Feb'
私は見たいだけです:
1. `I'm 'Mac' and this month is 'Mar'` - as *result #3*
2. `My name is: Mac` - as *result #4*
私は何を間違っていますか?乾杯!!
4 回目の更新:
自問自答: この方法で探しているものを手に入れることができますが、それでも感銘を受けません。
#!/bin/env python
import os, sys
from time import strftime
from calendar import month_abbr
from optparse import OptionParser
def abbrMonth(m):
mn = tuple(month_abbr)[int(m)]
return mn
# Set the CL options
parser = OptionParser()
usage = "usage: %prog [options] arg1 arg2"
parser.add_option("-m", "--month", type="string",
help="select month from 01|02|...|12",
dest="mon")
parser.add_option("-u", "--user", type="string",
help="name of the user",
dest="vos")
(options, args) = parser.parse_args()
if options.mon and options.vos:
thisMonth = abbrMonth(options.mon)
print "I'm '%s' and this month is '%s'" % (options.vos, thisMonth)
sys.exit(0)
if not options.mon and not options.vos:
options.mon = strftime("%m")
if options.mon:
thisMonth = abbrMonth(options.mon)
print "The month is: %s" % thisMonth
if options.vos:
print "My name is: %s" % options.vos
そして今、これはまさに私が探していたものを私に与えます:
# ./test.py
The month is: Feb
# ./test.py -m 09
The month is: Sep
# ./test.py -u Mac
My name is: Mac
# ./test.py -m 3 -u Mac
I'm 'Mac' and this month is 'Mar'
これがそうする唯一の方法ですか?私には「最善の方法」には見えません。乾杯!!