在windows filecopy

时间:2017-02-06 09:06:11

标签: python winapi timeout pywin32

我想使用python在Windows上复制文件列表。手动执行此操作时,我会在某些文件中看到超时,因此复制过程失败。我需要一种在python中实现超时检查的方法。

到目前为止,我使用的是win32 API:

import win32file
files = {'source_a' : 'dest_a', 'source_b' : 'dest_b'}

for f in files.keys():
    win32file.CopyFileW(f,files[f],0)

在某些情况下,CopyFileW功能在"合理的时间内没有返回",为了这个讨论,让我们说5秒。如何根据计时器包装此函数?

编辑:根据建议,我切换到使用CopyFileEx功能,因为它有一个取消接口。如果我在回调函数中进行超时检查,则只要回调正在运行,复制过程就会停止。据我所知,当有一些文件复制活动时,才会发出对回调函数的调用。如果ISN&T长时间没有,我就不会看到。

1 个答案:

答案 0 :(得分:2)

使用CopyFileEx代替CopyFile,它提供支持取消的界面。