2017-10-14 38 views
0

我想打電話給在命令行Python模塊的時間在我的時區轉換爲UTC時間是這樣的:Python parse_args讀取的參數在哪裏?

$ dt-la-utc.py "2017-10-14 12:10:00" 

當我執行如下所示的模塊中,convert_la_utc功能正常工作,如果我硬編碼日期和時間。但是,我想以日期和時間作爲輸入的命令行。但是parse_args函數不起作用。如果我運行Python調試器並檢查「args」變量,則沒有任何內容。我究竟做錯了什麼?

#!/usr/bin/env python 
import argparse 
import datetime 
from pdb import set_trace as debug 
import pytz 
import sys 

def parse_args(): 
    """Parse arguments.""" 
    parser = argparse.ArgumentParser(description="Convert LA time to UTC time.") 
    parser.add_argument("dt", help="LA date and time in format: YYYY-MM-DD HH:MM:SS") 
    args = parser.parse_args() 
    debug() 
    return args 

def convert_la_utc(): 
    """Convert time in Los Angeles to UTC time.""" 
    date = '2017-10-12' 
    time = '20:45:00' 
    date_time = date + ' ' + time 
    datetime_format = '%Y-%m-%d %H:%M:%S' 

    local = pytz.timezone("America/Los_Angeles") 
    naive = datetime.datetime.strptime(date_time, datetime_format) 
    local_dt = local.localize(naive, is_dst=None) 
    utc_dt = local_dt.astimezone(pytz.utc) 
    print "Datetime in Los Angeles: {0}".format(date_time) 
    print "UTC equivalent datetime: {0}".format(utc_dt.strftime("%Y-%m-%d %H:%M:%S")) 

def main(): 
    args = parse_args() 
    convert_la_utc() 

if __name__ == '__main__': 
    sys.exit(main()) 

回答

1

您需要進一步找回你的說法,例如:

def main(): 
    args = parse_args() 
    dt = args.dt 

什麼parser.parse_args()回報是argparse.Namespace對象 - 你可以在你的def main()加入print type(args)驗證。更多解釋可以在here找到。

+0

不是這樣。如果它在函數內部不可見,則它不會在其外部可見。 – William

+0

那麼..它適用於我。等待編輯。 – atru

+1

嘗試打印args.dt後解析它。有用。 argparser從您的選項名稱中定義動態成員。 –