感覺(jué)挺好玩的, mark一下
import sys
def readReverse(fName, step):
f = open(fName)
f.seek(0, 2)
lastPos = f.tell()
while True:
line = f.readline()
currentPos = f.tell()
i = 1
# 負(fù)責(zé)后退
while lastPos == currentPos:
if len(line) == currentPos: // 第一行數(shù)據(jù)
yield line
return
i += 0.5
f.seek(max(int(-step*i), -currentPos), 1) # 這里的只可以參考文件每行大小, 隨便選這個(gè)值step 選長(zhǎng)選小都會(huì)和下面的while
line = f.readline()
currentPos = f.tell()
## 負(fù)責(zé)前進(jìn)
while currentPos != lastPos:
line = f.readline()
currentPos = f.tell()
yield line
lastPos -= len(line)
f.seek(max(-step, -lastPos) - len(line), 1) # 同上r
if __name__ == '__main__':
if len(sys.argv) <= 1:
sys.exit()
f = open("reverse.txt", 'w')
for each in readReverse(sys.argv[1]):
print each
f.write(each)
f.close()