7_R*_*R3X 2 python timestamps files
我创建了一个简单的文本文件并使用检查其时间戳stat,这是输出:
任何 python 脚本之前的 stat 输出
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: -
Run Code Online (Sandbox Code Playgroud)
然后我运行了一个 python 脚本,它只是在读取模式下打开文件。我原以为“访问”标记的时间会发生变化,但事实并非如此。
Python 脚本和运行后的 stat 输出
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: -
Run Code Online (Sandbox Code Playgroud)
但是当我更改脚本以实际读取数据时,时间戳发生了变化。你能解释一下吗?
新的 Python 脚本和运行后的 stat 输出
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: -
Run Code Online (Sandbox Code Playgroud)
我认为这根本不是 Python 问题。是系统级别。在那个级别,打开文件与读取文件是完全不同的操作。我对 Linux 内部的任何想象都不是专家,但这里有一些基本事实:
如果您考虑“访问”一词的含义,这是有道理的。open(2) 返回一个文件描述符,随后可用于读取文件。用一个粗略的比喻,这就像拥有一场音乐会的全票通行证。直到你出现并开始追捧后台的追星族之前,你还没有访问过任何东西。;)