1.seek(offset,where) where=0,1从当前位置移动,2从结束位置移动

当有换行时,会被截断。seek()无返回值,值为None

2.tell() 文件的当前位置,tell是获得文件指针位置,受seek,readline,read,readlines影响,不受truncate影响

3.truncate(n) 从文件的首行首字符开始截断,截断文件为n个字符;无n表示从当前位置起截断;截断之后n后面的所有字符被删除

4.readline(n) 读入若干行,n表示读入的最长字节数。其中读取的开始位置为tell()+1.当n为空时,默认只读当前行的内容

5.readlines读入所有行内容


#!/usr/bin/env python

import sys

def filerev(fd):
	buff = 256
	fd.seek(0,2)
	size = fd.tell()
	rem = size % buff	
	pos = max(0,(size - (buff + rem)))
	line = ''
	while pos >= 0:
		fd.seek(pos,0)
		d = fd.read(buff+rem)
		rem = 0
		pos -= buff
		if '\n' in d:
			for c in reversed(d):
				if c != '\n':
					line = c + line
			else:
				if line:
					yield line
				line = c
		else:
			line = d + line
	else:
		yield line

if __name__ == '__main__':
	#file = sys.argv[1]
	#with open(file) as fd:
	#	for i in filerev(fd):
	#		print i
	with open('1.txt') as fd:
		print [i for i in filerev(fd)]