python中复制大文件的命令_如何使用python从包含数千个文件的目录中复制前100个文件?...

这里是你的答案如何遍历一个大的目录文件一个文件!在

我像个疯子一样搜索一个Windows动态链接库,它能让我在Linux上做些什么,但是没有运气。在

因此,我得出结论,唯一的方法就是创建自己的DLL,将这些静态函数公开给我,但后来我想起了pywintypes。

还有,耶!这已经在那里完成了。而且,一个迭代器函数已经实现了!酷!在

带有FindFirstFile()、FindNextFile()和FindClose()的Windows DLL可能仍在某处,但我没有找到它。所以,我用了pywintypes。在

编辑:

我发现(很晚)这些函数可以从kernel32.dll获得。一直躲在我鼻子前面。在

很抱歉你的依赖。但我认为你可以提取win32文件.pyd从…\site packages\win32文件夹和最终的依赖项,并将其独立于win32types与程序一起分发(如果需要)。在

正如你从速度测试中看到的,返回发电机的速度非常快。在

在这之后,你就可以一个文件地去做任何你想做的事情。在NOTE: win32file.FindFilesIterator() returns whole stat of the file/dir, therefore, using my listdir() to get the name and afterwards os.path.get*time() or os.path.is*() doesn't make sense. Better modify my listdir() for those checks.

现在,要完全解决你的问题仍然是个问题。在

对你来说,坏消息是这是从它喜欢的目录中的第一个项目开始的,你不能选择它将是哪一个。在我的测试中,它总是返回排序后的目录。(在Windows上)

半个好消息是,你可以在Windows上使用通配符来控制列出哪些文件。因此,要在一个不断填充的目录中使用此选项,您可以用版本标记新的文件,并执行以下操作:

^{pr2}$

但你必须设计得非常巧妙,否则你会有文件到达,但你没有找到他们,因为他们迟到了。在

如果在循环圈之间引入延迟,我不知道findFileIterator()是否会在新文件出现时继续检测它们。在

如果是这样,这也可能是你的解决方案。在

您始终可以预先生成迭代器,然后调用next()方法来获取下一个文件:i = listdir(".")

while True:

try: name = i.next()

except StopIteration: sleep(1)

# This probably won't work as imagined though

您可以根据最后到达的文件的大小决定等待新文件的时间。疯狂地猜测所有传入的文件大小大致相同加上或减去一些东西。在

但是,win32file提供了一些功能,可以帮助您监视目录的更改,我认为这是您最好的选择。在

在速度测试中,您还可以看到从这个迭代器构造列表比调用操作系统列表目录(),但是操作系统列表目录()将阻止,我的listdir()将不会。

它的目的不是创建文件列表。我不知道为什么会出现这种速度损失。只能猜测DLL调用、列表构造、排序之类的东西。操作系统列表目录()完全是用C写的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值