文件 – Linux如何区分以读取模式打开文件和实际从中读取数据?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了文件 – Linux如何区分以读取模式打开文件和实际从中读取数据?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2664字,纯文字阅读大概需要4分钟。
内容图文
![文件 – Linux如何区分以读取模式打开文件和实际从中读取数据?](/upload/InfoBanner/zyjiaocheng/957/6d36dc0702884602a72fb3db9ea73093.jpg)
我创建了一个简单的文本文件并使用stat检查其时间戳,这里是输出:
stat Output before any python script
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 Script and output of stat after running it
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: -
但是当我更改脚本以实际读取数据时,时间戳会发生变化.你能解释一下吗?
New Python Script and output of stat after running it
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: -
解决方法:
我认为这根本不是一个Python问题.这是系统级别.在该级别打开文件与读取文件完全不同.我不是Linux内部的任何想象力的专家,但这里有一些基本的事实:
>使用open(2)系统调用打开文件.
>使用read(2)系统调用读取文件
> open(2)有一个标志,指示系统在调用read(2)时不更新访问时间.它被称为O_NOATIME
>您可以从中推断出open(2)不会更新访问时间
如果你考虑访问这个词意味着什么是有道理的. open(2)返回一个文件描述符,该描述符随后可用于读取文件.使用粗略的比喻,就像拥有音乐会的全访问通道一样.直到你出现并开始在追逐阶段的群体,你没有访问任何东西.
内容总结
以上是互联网集市为您收集整理的文件 – Linux如何区分以读取模式打开文件和实际从中读取数据?全部内容,希望文章能够帮你解决文件 – Linux如何区分以读取模式打开文件和实际从中读取数据?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。