1.文件操作
def fileno(self, *args, **kwargs): # real signature unknown 返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到 def flush(self, *args, **kwargs): # real signature unknown 把文件从内存buffer里强制刷新到硬盘 def readable(self, *args, **kwargs): # real signature unknown 判断是否可读 def readline(self, *args, **kwargs): # real signature unknown 只读一行,遇到\r or \n为止 def seek(self, *args, **kwargs): # real signature unknown 把操作文件的光标移到指定位置 *注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。 如“路飞学城” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。 但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节 def seekable(self, *args, **kwargs): # real signature unknown 判断文件是否可进行seek操作 def tell(self, *args, **kwargs): # real signature unknown 返回当前文件操作光标位置 def truncate(self, *args, **kwargs): # real signature unknown 按指定长度截断文件 *指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。 def writable(self, *args, **kwargs): # real signature unknown 判断文件是否可写
2.flush:内存刷新到硬盘
3.readline:读取一行
4.文件光标:tell seek read(1)
(1)read:字符读取
(2)seek tell 字节读取
>>> f = open('file_1.bak','r+')>>> f.tell()0>>> f.read(1) #读取一个字符'路'>>> f.tell() #光标移动2个字节2>>> f.seek(0)0>>> f.read(1)'路'>>> f.read(1)'费'>>> f.tell()4>>> f.seek(3) #光标移动到第3个字节3>>> f.tell()3>>> f.read(1) #gbk 一个字符占2个字节 #读取失败Traceback (most recent call last): File "", line 1, in UnicodeDecodeError: 'gbk' codec can't decode byte 0xb5 in position 4: illegal multibyte sequence
5.截断:truncate(3) 剩下3个字节长度
>>> f = open('file_1.bak','r+')>>> f.truncate(3) # 剩下3个字节长度3