1

私はこのpythonプログラムを書きました。次のようなパラメーターを使用してスクリプトを実行するたびに

python script.py -t unixtime で現在の時刻を返します。

しかし、次のような引数を渡そうとするたびに

python script.py -c 1325058720 LMT が定義されていないと表示されます。だから私はLMTを

LMT = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime())

次に、引数をスキップして、現在の時刻を Localtime で返します。

誰かが LMT で引数を渡し、それを読み取り可能な時間形式に変換するのを手伝ってくれませんか? 引数を渡して、ローカルタイムで読み取り可能な形式で出力を表示する必要があります

import optparse
import re
import time


GMT = int(time.time())
AMT = 123456789
LMT = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(LMT))


VERBOSE=False
def report(output,cmdtype="UNIX COMMAND:"):
   #Notice the global statement allows input from outside of function
   if VERBOSE:
       print "%s: %s" % (cmdtype, output)
   else:
       print output

#Function to control option parsing in Python
def controller():
    global VERBOSE
    p = optparse.OptionParser()
    p.add_option('--time', '-t', action="store_true", help='gets current time in epoch')
    p.add_option('--nums', '-n', action="store_true", help='gets the some random number')
    p.add_option('--conv', '-c', action="store_true", help='convert epoch to readable')
    p.add_option('--verbose', '-v',
                action = 'store_true',
                help='prints verbosely',
                default=False)
    #Option Handling passes correct parameter to runBash
    options, arguments = p.parse_args()
    if options.verbose:
     VERBOSE=True
    if options.time:
        value = GMT
        report(value, "GMT")
    elif options.nums:
        value = AMT
        report(value, "AMT")
    elif options.conv:
        value = LMT
        report(value, "LMT")
    else:
        p.print_help()
4

2 に答える 2

1

クリックしなかった関数外の変数にアクセスするのは間違っていました。

 elif options.conv:
        LMT = options.conv
        LMT= float(LMT)
        LMT = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(LMT))
        print '%s'% LMT
于 2011-12-29T06:02:11.050 に答える
0

渡すパラメーターはまったく関係ありません。optparse がパラメータを調べようとする前に、次の行が実行されます。

LMT = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(LMT))

ご指摘のとおり、LMT は定義されておらず、エラーが発生します。その時点で LMT がどのようなものになると期待しているのか、私にはわかりません。time.localtime() は、エポックからローカルタイムに秒数を変換します。現在の時刻が必要なため (私が理解している場合)、何も渡す必要はありません。

実際、あなたは最初に次のように言います。

python script.py -t  # It returns me current time in unixtime.

これは間違っていますが、そうではありません。試してみてください。それはあなたに与えますNameError: name 'LMT' is not defined

于 2011-12-28T10:17:41.530 に答える