在使用Python读取CSV文件时,我们可以逐行或逐行读取整个文件。但是如果只想读取特定行(例如第24行),而不想读取整个文件和所有行,该怎么办呢?
您可以使用 linecache.getline 方法:
linecache.getline(filename, lineno[, module_globals])
从名为 filename 的文件中获取第 lineno 行。该函数不会引发异常 - 在错误情况下它将返回空字符串(对于找到的行,终止换行符将包括在内)。
import linecache
line = linecache.getline("foo.csv",24)
或者使用itertools模块中的consume recipe移动指针:
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)
for line in f:...
时,next会被重复调用。 - Padraic Cunninghamfor line in f...
来读取其余的行。 - Padraic Cunningham或者你可以在pandas中利用nrows
和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)))