5

我已阅读为 shutil.move 和 copy2 提供的文档。根据我的理解,move 只是调用了 copy2 函数,然后调用了 remove 函数,而 copy2 调用了 copy,然后调用了 copystat。这一切都是有道理的,除了当我使用它们时,我发现一个有趣的警告(我认为)如果我在文件上使用移动功能,文件上的所有时间戳都保持不变,包括创建日期。如果我只是在文件上调用 copy2,那么创建日期将变为当前时间。既然 move 使用的是 copy2,为什么创建日期也没有改变?或者是文档过度简化了它。如果我有一个用于 copy2 的脚本来复制原始创建时间戳,那就太好了。我只使用python几天,所以我只想知道为什么两个函数调用之间的创建时间戳不同。如果这有所作为,我在 Windows 7 64 上。一切都提前。

例子:

import os
import shutil
src = os.path.join(os.getcwd(), "copyme.txt")
src2 = os.path.join(os.getcwd(), "moveme.txt")
dst = os.path.join(os.getcwd(), "New Folder")
shutil.copy2(src, dst) #creation date changed
shutil.move(src2, dst) #creation date remains the same as original

我不明白为什么会这样……

4

1 回答 1

5

根据我对shutil文档的理解,shutil.copystat()不保留创建日期,它只保留最后访问时间和最后修改日期。

此外,仅当源和目标位于不同的文件系统上时才shutil.move()使用,否则它将使用该功能,该功能只需将文件移动到新位置而不创建新文件,并保留所有文件属性,包括创建日期shutil.copy2()。这就是为什么你会注意到不同的行为。shutil.copystat()os.rename()

于 2011-08-05T11:44:43.577 回答