Python with 工作原理、装饰器、回收机制、内存管理机制、拷贝、作用域等( 三 )


用户 / 应用程序直接操作的是文件 , 对文件进行的所有的操作 , 都是在向操作系统发送系统调用 , 然后再由操作将其转换成具体的硬盘操作 。
如何用文件 : open() , 控制文件读写内容的模式 : t 和 b , 强调 : t 和 b 不能单独使用 , 必须跟 r/w/a 连用 , t文本(默认的模式)
1、读写都以str ()为单位的
2、文本文件
3、必须指定='utf-8'
默认的字符编码是 , 默认的文件编码是utf-8
操作文件 : 读 / 写文件 , 应用程序对文件的读写请求都是在向操作系统发送
系统调用 , 然后由操作系统控制硬盘把输入读入内存、或者写入硬盘
f = open("helloworld.txt")print(f)# <_io.TextIOWrapper name='helloworld.txt' mode='r' encoding='cp936'># f的值是一种变量,占用的是应用程序的内存空间
cp936中文本地系统是中的cmd , 默认是CP936 , cp936就是指系统里第936号编码格式 , 即的编码((当然有其它编码格式:cp950 繁体中文、cp932 日语、 中欧语言)
默认数据是加载到内存中 , 结果也是保存到内存中 ,  程序执行结束 , 所有的数据进行释放 。在 , 使用open函数 , 可以打开一个已经存在的文件 , 或者创建一个新文件 。
# open( 文件名 , 访问模式 ) f = open("test.txt", "w")
如果文件不存在那么创建,如果存在那么就先清空,然后写入数据
文件的读、写、追加模式:r , w , a  , r+  , w+ , a+ , rb  , wb  , ab , r+b  , w+b  , a+b
关于file对象的常见属性:
常见的读写操作方法:
read([size]):读取指定字节 , 默认是全部内容 size为读取的长度 , 以byte为单位([size]):读取一行内容 , 如果定义了size , 有可能返回的只是一行的一部分([size]):读取全部内容 , 返回一个以行为单位的列表write(str):从指针所在位置写入字符串内容 , 把str写到文件中 , write()并不会在str后加上一个换行符([size]):将列表里的每个元素写入文件中 , 自动换行 , 把seq的内容全部写到文件中tell:指针当前位置 , 返回文件操作标记的当前位置 , 以文件的开头为原点seek:移动指针位置next:返回下一行 , 并将文件操作标记位移到下一行 。
seek(, from)有2个参数:
:偏移量 , from:方向 0 : 表示文件开头; 1 : 表示当前位置; 2 : 表示文件末尾
常见的关闭操作:
方法一 : 调用close()方法关闭文件 。文件使用完毕后必须关闭 , 因为文件对象会占用操作系统的资源 , 并且操作系统同一时间能打开的文件数量也是有限的 。
方法二 : 引入了with语句来自动帮我们调用close()方法 。
中的with语句使用于对资源进行访问的场合 , 保证不管处理过程中是否发生错误或者异常都会自动执行规定的(“清理”)操作 , 释放被访问的资源 , 比如有文件读写后自动关闭、线程中锁的自动获取和释放等 。
刷新缓冲区操作:
flush() 方法是用来刷新缓冲区的 , 即将缓冲区中的数据立刻写入文件 , 同时清空缓冲区 , 不需要是被动的等待输出缓冲区写入 。
一般情况下 , 文件关闭后会自动刷新缓冲区 , 但有时你需要在关闭前刷新它 , 这时就可以使用 flush() 方法 。