간단한 텍스트 파일을 만들고 다음을 사용하여 타임스탬프를 확인했습니다 stat
.
Python 스크립트 이전의 통계 출력
papagolf@Sierra ~/My Files/My Programs/Learning/Python % stat prac09_timestamp.txt
File: prac09_timestamp.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 2485542 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/papagolf) Gid: ( 1001/papagolf)
Access: 2017-09-10 11:10:40.979845492 +0530
Modify: 2017-09-10 11:10:40.979845492 +0530
Change: 2017-09-10 11:10:40.979845492 +0530
Birth: -
그런 다음 읽기 모드에서 파일을 여는 Python 스크립트를 실행했습니다. "액세스" 타임스탬프가 변경될 것이라고 생각했지만 그렇지 않습니다.
실행 후 Python 스크립트 및 통계 출력
papagolf@Sierra ~/My Files/My Programs/Learning/Python % cat python prac09_timestamp.py
cat: python: No such file or directory
a = open("prac09_timestamp.txt", "r")
a.close()
papagolf@Sierra ~/My Files/My Programs/Learning/Python % python prac09_timestamp.py
papagolf@Sierra ~/My Files/My Programs/Learning/Python % stat prac09_timestamp.txt
File: prac09_timestamp.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 2485542 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/papagolf) Gid: ( 1001/papagolf)
Access: 2017-09-10 11:10:40.979845492 +0530
Modify: 2017-09-10 11:10:40.979845492 +0530
Change: 2017-09-10 11:10:40.979845492 +0530
Birth: -
하지만 실제로 데이터를 읽기 위해 스크립트를 변경하자 타임스탬프가 변경되었습니다. 설명해주실 수 있나요?
실행 후 새로운 Python 스크립트 및 통계 출력
papagolf@Sierra ~/My Files/My Programs/Learning/Python % cat prac09_timestamp.py
a = open("prac09_timestamp.txt", "r")
a.readlines()
a.close()
papagolf@Sierra ~/My Files/My Programs/Learning/Python % python prac09_timestamp.py
papagolf@Sierra ~/My Files/My Programs/Learning/Python % stat prac09_timestamp.txt
File: prac09_timestamp.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 2485542 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/papagolf) Gid: ( 1001/papagolf)
Access: 2017-09-10 11:13:12.699848321 +0530
Modify: 2017-09-10 11:10:40.979845492 +0530
Change: 2017-09-10 11:10:40.979845492 +0530
Birth: -
답변1
나는 이것이 전혀 Python 질문이라고 생각하지 않습니다. 이것은 시스템 수준입니다. 이 수준에서는 파일을 여는 것과 파일을 읽는 것은 완전히 다른 작업입니다. 저는 Linux 내부 전문가는 아니지만 다음은 몇 가지 기본 사실입니다.
- 파일은 다음 명령으로 열립니다
open()
시스템 호출. - 파일을 읽을 때 사용
read()
시스템 호출 open()
시스템이 액세스 시간을 업데이트하지 않음을 나타내는 플래그가 있습니다.read()
전화했을 때. 그것은 알려져있다O_NOATIME
- 이를 통해
open()
접근 시간 자체는 업데이트되지 않을 것임을 유추할 수 있습니다.
당신이 뭔가를 원한다면사용할 권리의미가 있다는 뜻입니다. open()
나중에 관련 파일에 대해 일부 작업(읽기 및/또는 쓰기)을 수행할 수 있는 파일 설명자를 반환합니다. 대략적인 비유를 사용하면 콘서트 티켓을 갖는 것과 같습니다. 당신이 나타나서 놀기 시작할 때까지 실제로 아무 것도 방문한 적이 없습니다. ;)