|
@@ -564,33 +564,33 @@ class File(object):
|
|
|
@classmethod
|
|
|
def tail(self, filepath, n=10):
|
|
|
|
|
|
- res = ""
|
|
|
- with open(filepath, 'rb') as f:
|
|
|
- f_len = f.seek(0, 2)
|
|
|
- rem = f_len % PAGE
|
|
|
- page_n = f_len // PAGE
|
|
|
- r_len = rem if rem else PAGE
|
|
|
- while True:
|
|
|
- # 如果读取的页大小>=文件大小,直接读取数据输出
|
|
|
- if r_len >= f_len:
|
|
|
- f.seek(0)
|
|
|
- lines = f.readlines()[::-1]
|
|
|
- break
|
|
|
+ res = ""
|
|
|
+ with open(filepath, 'rb') as f:
|
|
|
+ f_len = f.seek(0, 2)
|
|
|
+ rem = f_len % PAGE
|
|
|
+ page_n = f_len // PAGE
|
|
|
+ r_len = rem if rem else PAGE
|
|
|
+ while True:
|
|
|
+ # 如果读取的页大小>=文件大小,直接读取数据输出
|
|
|
+ if r_len >= f_len:
|
|
|
+ f.seek(0)
|
|
|
+ lines = f.readlines()[::-1]
|
|
|
+ break
|
|
|
|
|
|
- f.seek(-r_len, 2)
|
|
|
- # print('f_len: {}, rem: {}, page_n: {}, r_len: {}'.format(f_len, rem, page_n, r_len))
|
|
|
- lines = f.readlines()[::-1]
|
|
|
- count = len(lines) -1 # 末行可能不完整,减一行,加大读取量
|
|
|
+ f.seek(-r_len, 2)
|
|
|
+ # print('f_len: {}, rem: {}, page_n: {}, r_len: {}'.format(f_len, rem, page_n, r_len))
|
|
|
+ lines = f.readlines()[::-1]
|
|
|
+ count = len(lines) -1 # 末行可能不完整,减一行,加大读取量
|
|
|
|
|
|
- if count >= n: # 如果读取到的行数>=指定行数,则退出循环读取数据
|
|
|
- break
|
|
|
- else: # 如果读取行数不够,载入更多的页大小读取数据
|
|
|
- r_len += PAGE
|
|
|
- page_n -= 1
|
|
|
+ if count >= n: # 如果读取到的行数>=指定行数,则退出循环读取数据
|
|
|
+ break
|
|
|
+ else: # 如果读取行数不够,载入更多的页大小读取数据
|
|
|
+ r_len += PAGE
|
|
|
+ page_n -= 1
|
|
|
|
|
|
- for line in lines[:n][::-1]:
|
|
|
- res += line.decode('utf-8')
|
|
|
- return res
|
|
|
+ for line in lines[:n][::-1]:
|
|
|
+ res += line.decode('utf-8')
|
|
|
+ return res
|
|
|
|
|
|
class Shell(object):
|
|
|
@staticmethod
|