以下是即将出版的一本书中的草稿,尚待完善,先发在这里权当回答。
————————————————————————————————
在Python中可以通过编码实现对文件的读写操作,然而必须清楚的是,程序对文件的读写功能实际是由操作系统提供的,因为普通程序不能直接操作磁盘。在执行文件操作时,Python会请求操作系统打开一个对象——这个对象通常被称作文件描述符(file descriptor,简称fd),其对应的就是后面要操作的文件对象——然后再通过操作系统提供的接口对该文件对象进行读取和写入数据的操作,即通常所说的“读取文件”和“写入文件”。
文件读写的操作步骤基本是这样的:打开文件——获取文件描述符。
读写文件——操作文件描述符。
关闭文件——关闭文件描述符。
也就是说,程序对文件的各种操作,其实是引用了系统返回的文件描述符。
在Python中,open()函数用于向操作系统请求返回一个文件对象,然后即可使用其他方法对文件对象进行数据的读取和写入等各种操作。
open()函数用于返回一个文件对象(File Object),最常与这两个参数一起使用:open(filename, mode)。例如:
>>> f = open('sample.txt', 'w')
其中第一个参数filename是一个用于指定要打开的文件名称的字符串,也可以指定路径。如果不指定文件所在的路径,Python会在当前文件夹中去寻找文件并打开。如果文件不能被打开,则会抛出OSError异常。
文件对象在Python中是一种path-like object(可翻译为类路径对象,或者不翻译直接用英文理解),即一种表示文件的系统路径的对象。它提供的是一个要被打开的文件的路径名称,可以是绝对路径或者相对于当前工作文件夹的路径,或者提供的是一个要被封装的文件描述符。
系统内核(kernel)使用文件描述符(file descriptor,简称fd)来访问文件,也就是说,实际上在使用open()函数打开现存文件时,内核返回的是一个文件描述符。读写文件时也需要使用文件描述符来指定要读写的文件。文件描述符在形式上是一个非负整数,实则是一个索引值。
(未完待续)