2011-08-05 17 views
3

私はshutil.moveとcopy2で提供されているドキュメントを読んでいます。私の理解から、move2はcopy2関数を呼び出し、次にremove関数を呼び出し、copy2はcopyを呼び出してcopystatを呼び出します。それはすべて意味がある、私はそれらを使用する場合を除いて私は興味深い警告を見つける(私は思う) ファイル上の移動機能を使用する場合、ファイルのすべてのタイムスタンプは作成日を含めて同じにとどまる。ファイル上でcopy2を呼び出すだけで、作成日が現在の時刻になります。 moveはcopy2を使用しているため、作成日も変更されないのはなぜですか?あるいは、ドキュメントがそれを単純化することです。私がcopy2のために持っているスクリプトでは、元の作成タイムスタンプもコピーするのが良いでしょう。私は数日間Pythonで作業していただけなので、2つの関数呼び出しの間に作成タイムスタンプが異なる理由を知りたいだけです。私はそれが違いをもたらす場合は、窓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 

私はそれだけでジャム、作成日を保持されません... shutilドキュメントの私の理解から、

答えて

3

shutil.copystat()を把握することはできません最終アクセス時刻と最終更新日。

また、shutil.move()は、それ以外の場合は、単純に新しいファイルを作成せずに新しい場所にファイルを移動os.rename()関数を使用する、ソースと宛先が異なるファイルシステム上にある場合にのみshutil.copystat()続いshutil.copy2()使用し、すべての保存しますファイルの属性、作成日が含まれています。そういうわけで、あなたは違った行動に気付いています。

+0

が完璧です。ありがとうございました!私はドキュメントを読んでいない。 – user880455

関連する問題