我想从命令行调用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())
答案 0 :(得分:1)
您需要进一步检索您的参数,例如:
def main():
args = parse_args()
dt = args.dt
parser.parse_args()
返回的是argparse.Namespace
个对象 - 您可以在print type(args)
中添加def main()
来验证它。可以找到更多解释here。