我有一个日志文件由另一个进程编写,我想要观察更改.每次发生变化时,我都想读取新数据,对其进行一些处理.
最好的方法是什么?我希望PyWin32库中有一些钩子.我找到了这个win32file.FindNextChangeNotification功能,但不知道如何让它看到一个特定的文件.
如果有人做过这样的事情,我会非常感激听到......
[编辑]我应该提到我是在一个不需要轮询的解决方案之后.
[编辑]诅咒!这似乎不适用于映射的网络驱动器.我猜Windows不会像在本地磁盘上那样"听到"文件的任何更新.
在Windows OS(64位)下运行python26时......我遇到了类似的错误:
import win32api" error in Python 2.6: pywintypes26.dll
Run Code Online (Sandbox Code Playgroud)
要么
pythoncom26.dll missing
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
我已经完成了python26的msi安装,所有的dll都可以在C:\ Python26\Lib\site-packages\pywin32_system32下找到
我找不到pywin32文档甚至是模块的一些概要(我知道它的win32 API的东西).
有没有pywin32文档或资源?也许有些例子?
我正在 Python 3.8 中设置一个自动点击器,我需要 win32api 来获取 GetAsyncKeyState 但它总是给我这个错误:
>>> import win32api
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing win32api: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
我使用的是 Windows 10 Home 64x。我已经试过了
pip install pypiwin32
Run Code Online (Sandbox Code Playgroud)
它成功安装但没有任何变化。我也尝试卸载并重新安装python。我也尝试以相同的方式安装 'django' 并且它在我时确实有效import django,所以我认为这只是一个 win32api 问题。
>>> import win32api
Run Code Online (Sandbox Code Playgroud)
我希望输出没有,但实际输出总是那个错误^^
我正在尝试安装pywin32.我从sourceforge.net下载了它.我跑的时候
setup.py install
Run Code Online (Sandbox Code Playgroud)
它显示"无法找到vcvarsall.bat".我用Google搜索,发现我必须安装MinGW并设置路径然后运行
python setup.py build --compiler=mingw32
Run Code Online (Sandbox Code Playgroud)
但它正在显示
Can't find a version in Windows.h
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?(我安装了Visual Studio 2010 Ultimate的试用版,并安装了MinGW C和C++编译器.操作系统:Windows 7.)
任何人都可以告诉我从哪里下载已经在MinGW中编译的Python二进制文件的源代码,所以我不必这么做.或者,如果我可以获得已经拥有Windows模块的python.
我已经读过可以使用COM/ActiveX在Crystal Reports中自动执行月度报告.我不是那么先进,无法理解这是什么,或者甚至可以用它来做什么.
我也使用Excel做了很多工作,看起来你也使用COM/ActiveX与它进行交互.
有人可以解释这是如何工作的,也许可以提供一个简短的例
有没有人知道从Python的win32版本中创建/读取符号链接的方法?理想情况下,应该有最少量的平台特定代码,因为我需要我的应用程序是跨平台的.
我有一个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个文件之后,会出现问题.它与我每次运行脚本而不是文件本身加载的文件数量有关.单独加载时失败的文件.
这是最近运行的一个用Python编写的不可靠应用程序的堆栈跟踪的一部分,该应用程序控制用Excel编写的另一个应用程序:
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None, 0, -2146788248), None)
Run Code Online (Sandbox Code Playgroud)
显然出现了问题...但是什么?[1]这些COM错误代码似乎过于神秘.
如何解码此错误消息?是否有一个表允许我将这个数字错误代码转换为更有意义的东西?
[1]我实际上知道在这种情况下出了什么问题,它试图访问一个没有Name属性的Range对象上的Name属性...并不是所有的bug都很容易找到!
如何以最简单的方式区分Windows XP和Windows Vista,使用Python和pywin32或wxPython?
基本上,如果当前操作系统是Vista,我需要一个被调用的函数返回True:
>>> isWindowsVista()
True
Run Code Online (Sandbox Code Playgroud)