1. 文件的基础操作
    open():可以打开一个指定路径下的文件,返回一个文件对象。
    open最常用的有两个参数,第一个参数是文件名(绝对路径或者相对路径),第二个是打开方式,‘r’ ,’w’, ‘a’, ‘b’,表示读(默认),写,追加写,二进制。
  2. 关于内建函数
    内建函数其实是包含在builtins这个模块中的一些函数。而builtins这个模块Pyhton解释器会自动包含。
    使用 dir(builtins)可以看到Python中一共有哪些内建函数。
  3. 关于文件对象
    我们学习C语言知道FILE*,通过FILE*进行文件读写操作。
    我们学习Linux时又知道,FILE*结构中其实包含了文件描述符,操作系统是通过文件描述符来对文件操作的。
    Python的文件对象,其实也包含了文件描述符,同时也包含了这个文件的一些其它属性,本质上也是通过文件描述符完成对文件的读写操作。
    既然文件对象包含了文件描述符,我们知道,一个进程可操作的文件描述符的数目是有上限的,因此对于用完了的文件描述符要及时关闭。
    当文件对象被垃圾回收器销毁时,也会同时释放文件描述符。
    如果 文件打开失败,(例如文件不存在),就会执行出错。
  4. 读文件
    read:读指定长度字节数的数据,返回一个字符串。(不是很常用)
    readlines:读取一行数据,返回一个字符串。
    readlines:读取文件,返回一个列表,列表中的每一项是一个字符串,代表了一行内容。
    直接使用for line in f的方式循环遍历每一行。功能和readline类似,一次只读一行,相比于readlines占用内存少。
  5. 写文件
    write:向文件中写一段字符串。
    如需写文件,必须要按照’w’或者’a’的方式打开文件,否则会写失败。
    writelines:参数是一个列表,列表中的每一个元素是一个字符串。
    并没有一个writeline这样的函数,因为这个动作等价于write时在字符串后面加上’\n’,同理,使用writelines的时候,也需要保证每一个元素的末尾,都带有’\n’
  6. 读写缓冲区
    Python的文件读写操作,即可以支持带缓冲区,也可以选择不带缓冲区
    在使用open函数打开一个文件的时候,其实还有第三个参数,可以指定是否使用缓冲区,以及缓冲区的大小是多少。
    使用flush方法可以立即刷新缓冲区。
  7. 操作文件指针
    文件具备随机访问的能力,这个过程是通过操作文件指针完成的。
    seek:将文件指针移动到从文件开头算起的第几个字节上,有两个参数,第一个参数offset表示偏移的字节数,第二个参数whence表示偏移量的其实位置在哪,值为0,表示从开头计算,值为1,表示从当前位置,值为2,表示从文件结尾位置
    tell:获取当前文件指针指向的位置,返回当前位置到文件开头的偏移量。
  8. with语句和上下文管理器
    在with语句块内进行文件操作,当文件操作完毕之后,出了with语句之外,就会自动执行f的关闭操作。
    一个支持上下文协议的对象才能被应用于with语句中,我们将这种对象称为上下文管理器,Python中很多内置对象都是上下文管理器,例如文件对象,线程锁对象等。