【问题标题】:TypeError ("unsupported operand type(s) for /: 'instance' and 'float'"TypeError ("不支持的操作数类型 /: 'instance' 和 'float'"
【发布时间】:2012-12-03 15:16:52
【问题描述】:

我正在使用 python/Zope 进行开发。 目前我在一个文件中将日期对象格式化为“%m-%d-%Y”格式。代码如下所示

if resultSet :
   for eachResult in resultSet :
      DateTime(eachResult['txntime']).strftime("%m-%d-%Y")

这会触发以下错误:

 File "Script (Python)", line 37, in CronJobFindUnmatchedTransfer_v2_1

 File "/opt/zope-2.7/lib/python/DateTime/DateTime.py", line 750, in __init
   s,d = _calcSD(t)
 File "/opt/zope-2.7/lib/python/DateTime/DateTime.py", line 331, in _calcSD
   d = dd / 86400.0

我对此一无所知。有人请帮我..

【问题讨论】:

  • 您的回溯不完整,看起来像是从错误的地方挑选出来的。您的 Zope 日志中是否没有要复制的错误?
  • 感谢您的评论。其实这是在生产环境中发生的。我无法访问生产环境。在我的开发环境中它工作正常。
  • 甚至您的生产环境的日志中肯定有更完整的回溯?至少部署我在对生产服务器的回答中提出的更改,以处理传递给 DateTime() 构造函数以使其失败的值。

标签: python zope


【解决方案1】:

您正在将一个值传递给该类支持的DateTime() 构造函数。不过,您传递的内容尚不清楚。

在 Zope 中,当它报告异常的回溯(将其写入日志,将其传递到错误视图)时,它会在打印每个堆栈时包含名称为 __traceback_info__ 的任何局部变量。这用于在记录的异常中包含调试信息。

使用它来跟踪您传递给 DateTime() 的值:

if resultSet:
   for eachResult in resultSet:
      __traceback_info__ = (eachResult['txntime'],)
      DateTime(eachResult['txntime']).strftime("%m-%d-%Y")

在前台模式下运行 Zope(bin/instance fgzopectl fg,具体取决于您拥有的版本和安装方式),并注意跟踪转储到 stderr。它会有一个额外的行,其值为 eachResult['txntime'] 包含在回溯中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-05
    • 2017-06-06
    • 2018-10-30
    • 2014-03-28
    • 2018-06-20
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多