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

beg*_*er_ 36 python datetime pywin32

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

ValueError:无法提前格式化日期

错误似乎来自pywin32模块.

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

raw = win32com.client.Dispatch("MyLib.MyClass")
Run Code Online (Sandbox Code Playgroud)

然后在以后失败:

acq_time = raw.GetCreationDate()
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:

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

2015年6月30日更新:

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

一些进一步的信息 该脚本读取数据文件并将读取的元数据插入数据库.只有较旧的文件似乎受到了bug的影响,而不是新的(我现在认为这是假设是错误的).因此我的想法是在我的Dev PC上初始加载,然后希望新文件再也不会出现问题.

如果PC是脚本将运行,它读取的文件是在Windows共享驱动器(映射的网络驱动器)上.我没有访问该驱动器所以我只是将文件复制到我的电脑中.现在,为了进行初始加载,我请求访问所述网络驱动器和BOOM.它也不适用于我的Dev.从共享驱动器读取时的机器.

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

编辑更新:

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

beg*_*er_ 1

事实证明这个问题实际上是微不足道的,并且在某种程度上是由于我缺乏 python 经验和误导性的错误消息。

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

del raw 或者 raw = None

这样问题就彻底解决了。它与日期或日期格式完全无关。因此,Peter Brittain 认为已达到此文件限制的说法可能是正确的。