我已经阅读了为shutil.move和copy2提供的文档。根据我的理解,move只是调用了copy2函数,然后调用了remove函数,而copy2调用了copy然后是copystat。一切都说得通,除非我使用它们,否则我会发现一个有趣的警告(我认为)
如果我在文件上使用 move 功能,则文件上的所有时间戳都将保持不变,包括创建日期。如果仅在文件上调用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

我不知道为什么会这样...

最佳答案

据我对shutil文档的理解,shutil.copystat()并不保留创建日期,它仅保留上次访问时间和上次修改日期。

另外,仅当源和目标位于不同文件系统上时,shutil.move()才使用shutil.copy2(),然后使用shutil.copystat(),否则os.rename()将使用ojit_code函数,该函数将文件 move 到新位置而不创建新文件,并保留所有文件属性,包括创建日期。这就是为什么您注意到不同的行为。

关于python - shutil.copy2(s,d)和shutil.move(s,d)之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6955504/

10-10 23:03