ZHU
ZHU

Reputation: 986

Is it possible to open a large csv without loading it to RAM entirely

Suppose I have a very large csv file.

file = open("foo.csv")

seems to put the whole csv in RAM. If I just need the first row of the csv but don't want python to load the open the entire file, is there a way to do it?

Upvotes: 1

Views: 1578

Answers (1)

Joseph Banks
Joseph Banks

Reputation: 41

If you just need the first row then you can use the csv module like so.

import csv

with open("foo.csv", "r") as my_csv:
    reader = csv.reader(my_csv)

    first_row = next(reader)

# do stuff with first_row

The CSV module uses generators so the whole file is not loaded into RAM, more rows are loaded as requested to prevent the whole file being loaded into RAM.

Upvotes: 2

Related Questions