确定文件何时完成复制[英] Determining when a file has finished copying

问题描述

大家好,

我正在编写一些代码来监视目录的外观
来自工作流的文件.当这些文件出现时,我会写一个命令文件
到告诉设备如何处理文件的设备.
命令文件的出现触发设备抓取
原始文件.我的问题是我不想将命令文件写入
设备,直到工作流中的原始文件被复制
完全地.由于这些文件很大,我的程序很有可能
在复制中间时扫描目录,所以我需要
确定哪些文件已完成复制,哪些仍在复制
中副本.

我没有在 Google 上看到任何关于此的内容,我也没有看到
使用
上的 os.stat() 方法的明显方法文件路径.有人对我如何实现这一点有任何想法吗?

提前致谢!
Doug

推荐答案

writeson 写道:
大家好,

我正在编写一些代码来监视目录的外观
来自工作流的文件.当这些文件出现时,我会写一个命令文件
到告诉设备如何处理文件的设备.
命令文件的出现触发设备抓取
原始文件.我的问题是我不想将命令文件写入
设备,直到工作流中的原始文件被复制
完全地.由于这些文件很大,我的程序很有可能
在复制中间时扫描目录,所以我需要
确定哪些文件已完成复制,哪些仍在复制
中副本.

我没有在 Google 上看到任何关于此的内容,我也没有看到
使用
上的 os.stat() 方法的明显方法文件路径.有人对我如何实现这一点有任何想法吗?

提前致谢!
道格
最好的方法是让复制文件的程序复制它们
到一个临时命名的文件,并在完成后重命名它.这样你
通过扫描具有特定掩码的文件知道何时完成.

如果那是不可能的,你也许可以使用 pyinotify
(http://pyinotify.sourceforge.net/) 监视 WRITE_CLOSE 事件
目录,然后处理文件.

-Larry


-----BEGIN PGP SIGNED MESSAGE-----
哈希:SHA1

这似乎是一个同步问题.一个场景描述可以清楚
事出有因,我们可以帮忙:

程序 W(工作流)将文件 F 复制到目录 B
程序 D(狗)轮询目录 B 以查找是否有任何新文件 F

在这种情况下,程序D不知道F是否已经完全
复制了,但是 W 复制了.

解决方法:
创建自定义锁定机制.程序W写一个文件D/F.lock到
表示文件 F 不完整,当 F 被完全复制时它被删除.
我在复制过程中对 W 进行了编程,F 和 F.lock 都被保留了,所以程序 D
不费心处理 F.从 W 中的崩溃中恢复将是另一个
要解决的问题.

最好的问候,
曼努埃尔.

莱特森写道:
大家好,

我正在编写一些代码来监视目录的外观
来自工作流的文件.当这些文件出现时,我会写一个命令文件
到告诉设备如何处理文件的设备.
命令文件的出现触发设备抓取
原始文件.我的问题是我不想将命令文件写入
设备,直到工作流中的原始文件被复制
完全地.由于这些文件很大,我的程序很有可能
在复制中间时扫描目录,所以我需要
确定哪些文件已完成复制,哪些仍在复制
中副本.

我没有在 Google 上看到任何关于此的内容,我也没有看到
使用
上的 os.stat() 方法的明显方法文件路径.有人对我如何实现这一点有任何想法吗?

提前致谢!
道格
--
http://mail.python.org/mailman/listinfo/python-list
-----开始PGP签名-----
版本:GnuPG v1.4.9 (GNU/Linux)
评论:在 Mozilla 中使用 GnuPG - http://enigmail.mozdev.org

iEYEARECAAYFAkh04skACgkQI2zpkmcEAhi0eQCgsVqg51fWiw i47jxqtbR8Gz2U
UukAoKm15UAm3KpEyjhsIGQ+68rq8WuU
=UFHi
-----结束 PGP 签名-----


还可以:
pgm-W 复制/创建-填充任何 B/dummy
完成后,pgm-W 将 B/dummy 重命名为 B/F
pgm-D 只侦察 B/F 并在找到时执行它

史蒂夫
no******@hughes.net
曼努埃尔·巴斯克斯·阿科斯塔写道:
-----开始PGP签名消息-----
哈希:SHA1

这似乎是一个同步问题.一个场景描述可以清楚
解决问题,我们可以提供帮助:

程序 W(工作流)将文件 F 复制到目录 B
程序 D(狗)轮询目录 B 以查找是否有任何新文件 F

在这种情况下,程序D不知道F是否已经完全
复制了,但是 W 复制了.

解决方法:
创建自定义锁定机制.程序W写一个文件D/F.lock到
表示文件 F 不完整,当 F 被完全复制时它被删除.
我在复制过程中对 W 进行了编程,F 和 F.lock 都被保留了,所以程序 D
不费心处理 F.从 W 中的崩溃中恢复将是另一个
有待解决的问题.

最好的问候,
曼努埃尔.

莱特森写道:
>大家好,

我正在编写一些代码来监视目录中
来自工作流的文件的外观.当这些文件出现时,我将命令文件
写入告诉设备如何处理文件的设备.
命令文件的出现触发设备抓取
原始文件.我的问题是我不想将命令文件写入
设备,直到工作流中的原始文件被完全复制
.由于这些文件很大,我的程序很有可能
在复制过程中扫描目录,所以我需要
确定哪些文件已完成复制,哪些仍在
复制中.

我在 Google 上没有看到任何关于此的内容,并且我没有看到
使用 os.stat() 方法执行此操作的明显方法在
文件路径上.有人对我如何完成此任务有任何想法吗?

提前致谢!
Doug
--
http://mail.python.org/mailman/listinfo/python-list

-----开始PGP签名-----
版本:GnuPG v1.4.9 (GNU/Linux)
评论:在 Mozilla 中使用 GnuPG - http://enigmail.mozdev.org

iEYEARECAAYFAkh04skACgkQI2zpkmcEAhi0eQCgsVqg51fWiw i47jxqtbR8Gz2U
UukAoKm15UAm3KpEyjhsIGQ+68rq8WuU
=UFHi
-----结束PGP签名-----
--
http://mail.python.org/mailman/listinfo/python-list

本文地址:https://www.itbaoku.cn/post/1050700.html