2013-07-16 190 views
8

我有这种情况,我想保留一个文件的原始属性(文件创建日期等)。通常,当您在Windows中复制文件时,您制作的副本会获得新的“修改”日期等。我已经穿过shutil.copy命令 - 尽管这不会保持文件属性相同。保留副本上的文件属性

我找到了following question on Stack Unix,但我想知道是否有方法让我在Python中执行此操作。

回答

16

如果你看一下shutil的文档,你会立即发现copy2功能,那就是:

等同于copy()除了copy2()也试图保存所有文件的元数据。

在最新版本的Python,有功能的整体转换做到位并在此separately- copycopymodecopystat片 - 但是,如果你只是想复制的一切,copy2做一切可能的。

正如文档顶部的警告所说,“一切皆有可能”并不代表任何事情,但它确实包括日期和其他属性。特别是:

在Windows上,不会复制文件所有者,ACL和备用数据流。

如果你真的需要包括那些东西,你将需要访问Win32 API(这是最容易通过pywin32)。但是你没有。

+0

辉煌 - 古老的文物! :D –

+0

如果您仔细阅读文档,您会注意到'copy2'旨在等同于'cp -p'(这是您想要的),但它实际上无法在Windows上模拟它(因为文件所有权问题),所以相反他们说它复制“可能的一切”并记录这意味着什么。无论如何,对于你的用例来说,没关系,但未来的读者可能会误导,所以我编辑了答案。 – abarnert

+0

这可能是相关的。我正在研究取证工具(这将允许我将文件从一个目录复制到另一个目录)。 –