Python 使用 optparse 指定日期格式

标签 python

我是 Python 2.6 的新手

我正在尝试传递一个日期作为 Optargs 的参数。

当尝试这样做时: Specify format for input arguments argparse python 我收到此错误:

parser.add_option('-e', '--end', help='end date - format YYYYMMDD', type=valid_date)

File "/usr/lib64/python2.6/optparse.py", line 1012, in add_option
option = self.option_class(*args, **kwargs)
File "/usr/lib64/python2.6/optparse.py", line 577, in __init__
checker(self)
File "/usr/lib64/python2.6/optparse.py", line 660, in _check_type
raise OptionError("invalid option type: %r" % self.type, self)
optparse.OptionError: option -e/--end: invalid option type: <function valid_date at 0x7f310294fde8>

我的程序是这样的:

parser.add_option('-e', '--end', help='end date - format YYYYMMDD', type=valid_date)

(...)

def valid_date(s):
  try:
    return datetime.datetime.strptime(s, "%Y%m%d")
  except ValueError:
     print("Not a valid date: '{0}'.".format(s))

你能帮帮我吗?

谢谢!

最佳答案

如果您需要坚持使用 python 2.6,这里是一个使用 optparse 的实现:

from optparse import Option, OptionValueError, OptionParser
from copy import copy
from datetime import datetime

# function to check/convert option value to datetime object
def valid_date(option, opt, value):
    try:
        return datetime.strptime(value,'%Y%m%d')
    except ValueError:
        raise OptionValueError( 'option %s: invalid date format: %r' % (opt, value))

# extend Option class with date type
class MyOption(Option):
    TYPES = Option.TYPES + ('date',)
    TYPE_CHECKER = copy(Option.TYPE_CHECKER)
    TYPE_CHECKER['date'] = valid_date

# parse options     
parser = OptionParser(option_class=MyOption)
parser.add_option( '-e', '--end', type='date' , help='end date - format YYYYMMDD')
(opts, args) = parser.parse_args()

# do something meaningful
print opts.end

有关详细信息,请参阅 https://docs.python.org/2/library/optparse.html#adding-new-types

关于Python 使用 optparse 指定日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39613482/

相关文章:

python - 无法弄清楚如何使用表达式在 Python 中验证加拿大邮政编码

python - 在 Python 中导入 XML 字典

python - 将 numpy boolean 选择器限制为前几个真值的有效方法

python - 从 Django 中的 URL 获取变量中的两个字符串

python - 用urllib2指定请求方法?

python - 使用 python 编写 Ev3 窗口代码

python - 在 Google App Engine 中批量上传数据 - 问题

python - 需要从字典列表中删除重复项并更改剩余重复项的数据(python)

python - 在一行中格式化某些 JSON 对象

python - 有条件的 Django 模型创建