2013-05-09 2 views
1

파일을 마지막으로 읽은 시간을 얻는 해결책을 찾고 있습니다. 파일은 읽기 모드로 열리거나 수정되지 않습니다. 이 기능은 파일에 쓰는 경우에만 작동합니다. 파일을 읽기 모드로 열면 시간이 정확하지 않습니다.파이썬은 파일의 마지막 읽기 시간을 얻습니다.

f = open('my_path/test.txt', 'r') 
f.close() 

print time.ctime(os.stat('my_path/test.txt').st_mtime) 

힌트 :

+0

파이썬 코드 내에서 파일을 읽기 모드로 열면이 기능이 작동하지 않습니다. – snowflake

답변

10

stat 구조에서 잘못된 항목을보고 있습니다. os.stat() documentation에서

print time.ctime(os.stat('my_path/test.txt').st_atime) 

: 당신은 .st_atime 대신 값을 사용하려는

  • st_atime - 가장 최근의 액세스 시간,

참고 모든 시스템 업데이트 atime 타임 스탬프는 Criticism of atime을 참조하십시오. 2.6.30부터 기본적으로 Linux 커널은 relatime 설정을 사용합니다. 여기서 atime 값은 24 시간 이상 된 경우에만 업데이트됩니다. strictatime 옵션을 fstab에 설정하여이를 변경할 수 있습니다.

Windows Vista에서는 atime으로 업데이트 할 수 없지만 re-enable them 수 있습니다.

+0

이것은 탐색기에서 파일을 열었지만 파이썬 코드에서는 열지 않은 경우에만 작동합니다 ... – snowflake

+0

이 경우 OS는 파이썬이 트리거하지 않는 특정 상황에서만 액세스 시간을 업데이트합니다. 'atime' 값이 갱신되지 않으면, 파일이 마지막으로 액세스되었을 때를 보여주는 다른 통계는 없습니다. 어떤 플랫폼 이죠, Windows? –

+0

아니요, Linux (Ubuntu 12.04)이지만 프로그램은 크로스 플랫폼을 실행해야합니다. 지금까지 파일 이름을 새 파일에 저장하여이 문제를 해결했지만 너무 좋지 않음을 알았습니다. 아마도 이것은 유일한 방법 일 것입니다 ... – snowflake

관련 문제