5

CSV使用 python 的文件中,我们可以逐行或逐行读取所有文件,我想读取特定行(行号 24 示例)而不读取所有文件和所有行。

4

2 回答 2

8

您可以使用linecache.getline

linecache.getline(文件名, lineno[, module_globals])

从名为 filename 的文件中获取 lineno。此函数永远不会引发异常——它会在错误时返回 ''(找到的行将包含终止换行符)。

import linecache


line = linecache.getline("foo.csv",24)

或者使用 itertools 中的消耗配方来移动指针:

import collections
from itertools import islice

def consume(iterator, n):
    "Advance the iterator n-steps ahead. If n is none, consume entirely."
    # Use functions that consume iterators at C speed.
    if n is None:
        # feed the entire iterator into a zero-length deque
        collections.deque(iterator, maxlen=0)
    else:
        # advance to the empty slice starting at position n
        next(islice(iterator, n, n), None)

with open("foo.csv") as f:
    consume(f,23)
    line = next(f)
于 2015-06-21T12:00:07.387 回答
0

或者,您可以利用pandas中的nrowsand参数skiprows

line_number = 30
pd.read_csv('big.csv.gz', sep = "\t", nrows = 1, skiprows = line_number - 1)

记住skiprows可以是一个列表,所以如果你需要标题使用

pd.read_csv('big.csv.gz', sep = "\t", nrows = 1, skiprows = list(range(1, line_number - 1)))
于 2020-12-17T22:09:44.247 回答