错误“ValueError:无法在此早期格式化日期”在一台PC上运行,其他工作正常

时间:2015-05-29 11:35:34

标签: python datetime pywin32

我有一个Python脚本,可以在我的开发PC上完美运行。两者都是具有相同Python版本(2.7.9)的Windows 7。但是在目标机器上我得到了一个

  

ValueError:无法早日格式化日期

The error似乎来自pywin32模块。

代码使用pywin32调用的第三方库:

raw = win32com.client.Dispatch("MyLib.MyClass")

然后在以后失败:

acq_time = raw.GetCreationDate()

现在我迷失了为什么这在我的电脑上而不是在目标机器上工作。两者都有Windows 7的“公司安装”,例如,相同的区域和日期时间设置。

问题是什么?我该如何解决?

编辑:

见评论。原因可能是使用了C++运行时。我还在调查。我现在怀疑在pywin32的安装时存在哪些运行时很重要。为什么?因为我的开发PC上的DependenyWalker说我的Lotus Notes安装中pywin取决于MSVCR90.DLL。这告诉我它肯定不是“硬”链接。

更新2015年6月30日:

我错了......这个问题现在也发生在我的电脑上。

进一步的信息。该脚本读取数据文件并插入读取 元数据到数据库中。只有较旧的文件似乎受到影响 错误,而不是新的(我现在认为这是假设是错误的)。所以我的想法是在我的开发电脑上初始加载,然后希望新文件再也不会出现问题。

如果PC的脚本将运行,它所读取的文件都在 Windows共享驱动器(映射网络驱动器)。我无权访问 开车所以我只是将文件复制到我的电脑上。现在做初始 加载我请求访问所述网络驱动器和BOOM。它也没有 我的开发工作。从共享驱动器读取时的机器。

同一文件并不总是会出现此问题。我现在认为它与特定文件无关。我也尝试在64位PC上使用64位python。在那里花了更长时间才发生错误。事实上,一个文件被成功读取,但在我的电脑上失败了。我现在认为这是某种记忆问题?我相信它总是在日期行上失败,因为所有其他行只返回null或空字符串,这不会导致任何问题,并且完全有可能这样的值可以为null。但是对于日期来说这是一个问题,它不应该为null,然后抛出错误。

更新编辑:

在我的电脑上,它总是在同一个文件上失败。单独加载该文件非常合适。我现在认为这是一种计数器/数字溢出,在读取n个文件之后,会出现问题。它与我每次运行脚本而不是文件本身加载的文件数量有关。单独加载时失败的文件。

1 个答案:

答案 0 :(得分:1)

事实证明这个问题实际上是微不足道的,有些原因是由于我缺乏python和误导性错误消息的经验。

COM对象raw = win32com.client.Dispatch("MyLib.MyClass")用于在循环中打开专有文件。要解决这个问题,必须在下一次迭代之前“清理”对象。这可以通过

完成

del raw 要么 raw = None

这完全解决了这个问题。它与日期或日期格式完全无关。因此,Peter Brittain可能已达到此文件限制。