2011-08-05 65 views
3

shutil.move 및 copy2에 제공된 설명서를 읽었습니다. 내 이해에서 move2는 copy2 함수를 호출 한 다음 remove 함수를 호출하고 copy2는 copy를 호출 한 다음 copystat를 호출합니다. 그것들을 사용할 때를 제외하고 나는 흥미로운주의 사항을 발견했다. (나는 생각한다) 파일의 move 함수를 사용하면 파일의 모든 타임 스탬프가 생성 날짜를 포함하여 동일하게 유지된다. 파일에서 copy2를 호출하면 작성 날짜가 현재 시간이됩니다. move는 copy2를 사용하기 때문에 생성 날짜도 변경되지 않는 이유는 무엇입니까? 또는 문서가 그것을 단순화하고 있습니다. copy2에 대한 스크립트가 원본 생성 타임 스탬프를 복사하는 것이 좋습니다. 필자는 파이썬으로 며칠간 만 작업했기 때문에 두 함수 호출간에 생성 타임 스탬프가 다른 이유를 알고 싶습니다. 나는 그 차이가 창 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