python - pb 在 python optparse 模块中带有回调

标签 python callback optparse

我正在使用 Python 2.6 及其 optparse 模块。我想通过回调将我的参数之一转换为日期时间,但失败了。

这是代码:

def parsedate(option, opt_str, value, parser):
    option.date = datetime.strptime(value, "%Y/%m/%d")

def parse_options(args):
    parser = OptionParser(usage="%prog -l LOGFOLDER [-e]", version="%prog 1.0")
    parser.add_option("-d", "--date", action="callback", callback="parsedate", dest="date")  
    global options
    (options, args) = parser.parse_args(args)
    print options.date.strftime()

if __name__ == "__main__":
        parse_options(sys.argv[1:])

我收到错误File: optparse.py in _check_callback“callback not callable”。我想我定义回调的方式做错了,但是什么呢?为什么?有人可以帮忙吗?

更新:正如我在评论中所说,我认为在命令行脚本的选项中包含日期时间的最佳方法是按照python doc中的建议扩展optparse。

下面的类确实可以很好地实现这一点:

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

def check_date(option, opt, value):
    try:
        return datetime.strptime(value, "%Y/%m/%d")
    except ValueError:
        raise OptionValueError(
            "option %s: invalid date value: %r. Should have a format like \"YYYY/MM/DD\"" % (opt, value))

class dateOption (Option):
    TYPES = Option.TYPES + ("date",)
    TYPE_CHECKER = copy(Option.TYPE_CHECKER)
    TYPE_CHECKER["date"] = check_date

无论如何,非常感谢您的帮助!

最佳答案

您已在引号中解析了日期。不应该的。

关于python - pb 在 python optparse 模块中带有回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2620637/

相关文章:

python - 尝试在 Python 中获取 .wav 文件的频率

Android:处理回调结果以避免崩溃的最佳方法?

java - 使用 CompletableFuture 进行回调

ruby - 使用 Ruby 从命令行参数中提取文件名

python - 使用自动指定的模拟跟踪调用顺序

python - 如何在backtrader中查看fed数据?

javascript - 声明完成时 jQuery 回调未触发 :?

python - 在 Python 中处理(可能的)可选参数

python - Optparse 回调不使用参数

python - 如何将字节解码为第一个正斜杠?