相关疑难解决方法(0)

使用Python获取文件的最后n行,类似于tail

我正在为Web应用程序编写一个日志文件查看器,为此我想通过日志文件的行分页.文件中的项目是基于行的,底部是最新项目.

所以我需要一种tail()方法,可以n从底部读取行并支持偏移量.我想出的是这样的:

def tail(f, n, offset=0):
    """Reads a n lines from f with an offset of offset lines."""
    avg_line_length = 74
    to_read = n + offset
    while 1:
        try:
            f.seek(-(avg_line_length * to_read), 2)
        except IOError:
            # woops.  apparently file is smaller than what we want
            # to step back, go to the beginning instead
            f.seek(0)
        pos = f.tell()
        lines = f.read().splitlines()
        if len(lines) >= to_read or pos == 0:
            return lines[-to_read:offset and -offset or None]
        avg_line_length …
Run Code Online (Sandbox Code Playgroud)

python file-io file tail logfiles

174
推荐指数
10
解决办法
14万
查看次数

高效地将最后'n'行CSV读入DataFrame

一些方法可以做到这一点:

  1. 阅读整个CSV然后使用 df.tail
  2. 以某种方式反转文件(对于大文件最好的方法是什么?)然后使用nrows参数来读取
  3. 以某种方式找到CSV中的行数,然后使用skiprows并读取所需的行数.
  4. 也许做块读取丢弃初始块(虽然不知道这将如何工作)

可以用更简单的方式完成吗?如果不是,应该优先考虑这三者中的哪一个?为什么?

可能相关:

  1. 有效地找到文本文件中的最后一行
  2. 使用pandas read_csv和nrows读取~13000行CSV文件的部分内容

没有直接关系:

  1. 如何获得最后一行pandas数据帧?

python csv numpy pandas

11
推荐指数
4
解决办法
1万
查看次数

Python:检测文件读取中的当前行是否为最后一行

我正在逐行读取Python中的文件,我需要知道在读取时哪一行是最后一行,如下所示:

 f = open("myfile.txt")
 for line in f:
    if line is lastline:
       #do smth
Run Code Online (Sandbox Code Playgroud)

从我发现的例子中我发现它涉及搜索和完整的文件读数以计算行数等.我可以检测到当前行是最后一行吗?我试图检查"\n"是否存在,但在很多情况下,最后一行后面没有反斜杠N.

对不起,如果我的问题是多余的,因为我没有在SO上找到答案

python

11
推荐指数
3
解决办法
2万
查看次数

标签 统计

python ×3

csv ×1

file ×1

file-io ×1

logfiles ×1

numpy ×1

pandas ×1

tail ×1