2011-08-05 90 views
3

我已閱讀爲shutil.move和copy2提供的文檔。從我的理解移動只是調用copy2函數,然後調用remove函數,而copy2調用copy然後copystat。這一切都是有道理的,除了當我使用它們時,我發現一個有趣的警告(我認爲) 如果我在文件上使用移動功能,文件上的所有時間戳都保持不變,包括創建日期。如果我只是在文件上調用copy2,則創建日期將成爲當前時間。既然move是使用copy2,爲什麼創建日期也不會改變?或者是文件過分簡化了它。如果我爲copy2創建的腳本也會複製原始創建時間戳,那就太好了。我只用python工作了幾天,所以我只想知道兩個函數調用之間爲什麼創建時間戳不同。我在Windows 7 64上,如果這有所作爲。全部提前。shutil.copy2(s,d)和shutil.move(s,d)之間的區別

例如:

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 

我想不通這是爲什麼發生的事情......

回答

3

從我的shutil文件的理解,shutil.copystat()不保留創建日期,它只蜜餞上次訪問時間和上次修改日期。

此外,shutil.move()使用shutil.copy2()其次shutil.copystat()只有當源和目的地在不同的文件系統,否則將使用os.rename()功能,只需將文件複製到新的位置移動,而無需創建一個新的文件,並保留所有文件屬性,包括創建日期。這就是爲什麼你注意到不同的行爲。

+0

完美。謝謝!我想念閱讀文檔。 – user880455

相關問題