#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""
思路:
先将指针移动到文件最后
f.seek(0,2)
向前移动2位读一位
f.seek(-2,1)
f.read(1)
f.tell() == 1 到达文件顶部退出循环
文件内容:
a
b
c
d
"""
f = open('文件倒读.txt')
f.seek(0,2)
while f.tell() > 1:
f.seek(-2,1) #第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后
c = f.read(1)
print c,
f.close()
#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""
思路:
先将指针移动到文件最后
f.seek(0,2)
向前移动2位读一位
f.seek(-2,1)
f.read(1)
f.tell() == 1 到达文件顶部退出循环
文件内容:
1a
2b
3c
4d
"""
f = open('文件倒读.txt')
line = ''
f.seek(0,2)
#while f.tell() > 1:
while True:
if f.tell() == 1:
print line
break
f.seek(-2,1) #第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后
c = f.read(1)
if c != '\n':
line = c + line
else:
print line
line = ''
f.close()
#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""
思路:
先将指针移动到文件最后
f.seek(0,2)
向前移动2位读一位
f.seek(-2,1)
f.read(1)
f.tell() == 1 到达文件顶部退出循环
文件内容:
1a
2b
3c
4d
"""
import sys
def filerev(file):
fd = open(file)
line = ''
fd.seek(0,2)
#while f.tell() > 1:
while True:
if fd.tell() == 1:
yield line
break
else:
fd.seek(-2,1) #第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后
c = fd.read(1)
if c != '\n':
line = c + line
else:
yield line
line = ''
fd.close()
def main():
a = filerev('文件倒读.txt’)#生成器对象,返回文件类型
for i in a:
print i
if __name__ =='__main__':
main()
buff方法读取
#!/usr/bin/env python
#-*- coding:utf-8 -*-
"""
思路:
先将指针移动到文件最后
f.seek(0,2)
向前移动2位读一位
f.seek(-2,1)
f.read(1)
f.tell() == 1 到达文件顶部退出循环
文件内容:
1a
2b
3c
4d
"""
import sys
def filerev(file):
buf = 256
fd = open(file)
line = ''
fd.seek(0,2)
size = fd.tell()
rem = size % buf
pos = max(0,size-(buf+rem))
#while f.tell() > 1:
while True:
if pos < 0:
yield line
break
else:
fd.seek(pos) #第一个参数偏移量,第二个参数 当前位置:0,文件开始1,当前位置,2文件最后
d = fd.read(buf+rem)
rem = 0
pos -= buf
if '\n' in d:
for c in reversed(d):
if c != '\n':
line = c+line
else:
if line:
yield line
line = ''
else:
line = d+line
fd.close()
def main():
a = filerev('文件倒读.txt')#生成器对象,返回文件类型
for i in a:
print i
if __name__ =='__main__':
main()