再次记录关于IO和文件的学习

IO和文件是计算机中非常基础的概念。但是自己在很长一段时间里,对它们缺乏认知。

现在,慢慢地有所了解,也知道自己之前总是无法探知到IO和文件内里滋味的原因:IO和文件是相互缠绕在一起的概念,而且属于很基础的概念,在Python中,抽象程度过高,反倒不适合用来学习IO和文件。所以,还是要从最基础的 Unix IO 学起,然后接触到 rio io 和 C 语言的 std io,最后再到 Python 中找寻等同的概念和实现。这是比较顺的学习通道。

什么是文件呢?文件就是一串字节序列,仅此而已。区别在于,这串字节是哪里的,是磁盘上的呢,还是终端上的,抑或是网络上的。对文件的操作都是要经过操作系统内核。内核维护着三个表:

在一般的文件读写过程中,我们只需要通过文件描述符来索引文件,然后通过维护文件中的位置来进行读写。意思就是,每次读写都是从文件中的某一个位置处开始进行,读写一定的字节序列。为了避免每次读写过程都陷入内核中,一般情况下的文件读写都是带缓冲的读写。在这样的使用场景中,Python 相应的函数为:

以上这些就是 Python 中用于读写文件的主要方法。

事实上,这些日常中读写的文件还只是一部分,此外还有目录文件和网络套接字文件。那么,我们如何在 Python 对文件进行除了读写以外的操作呢?

比如,文件的创建时间、最近修改时间、最近访问时间,文件的大小等。

比如,一个文件路径是普通文件还是目录文件,相对路径之上的绝对路径是什么,一个绝对路径的 basenname 和 dirname 是什么?值得注意的是,这里的 basename 不一定是普通文件的名字,也可能是一个文件夹也就是目录文件的名字。

针对路径的操作,还有一类比较常见:遍历某个目录下的所有文件。可以使用 os.walk(path) 或者 os.listdir(path) 。

具体使用哪一个,以及如何使用,需要看自己遍历的目的是什么。是为了统计文件信息,还是为了统计文件数据,抑或是为了整理文件。根据需求进行选择。


不知是该恭喜,还是该怎样,总之阅读到该文的,你是第 人。每一次刷新,都是不同的自己。