Python parse_args在哪里读取参数?

时间:2017-10-14 21:39:37

标签: python

我想从命令行调用Python模块,将我的时区中的时间转换为UTC时间,如下所示:

$ 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 个答案:

答案 0 :(得分:1)

您需要进一步检索您的参数,例如:

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

parser.parse_args()返回的是argparse.Namespace个对象 - 您可以在print type(args)中添加def main()来验证它。可以找到更多解释here