Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Single Line from file is too big?

Tags:

In python, I'm reading a large file, and I want to add each line(after some modifications) to an empty list. I want to do this to only the first few lines, so I did:

X = []
for line in range(3):

    i = file.readline()
    m = str(i)
    X.append(m)

However, an error shows up, and says there is a MemoryError for the line i = file.readline().

What should I do? It is the same even if I make the range 1 (although I don't know how that affects the line, since it's inside the loop).

How do I not get the error code? I'm iterating, and I can't make it into a binary file because the file isn't just integers - there's decimals and non-numerical characters.

The txt file is 5 gigs.

Any ideas?

like image 420
Goku241 Avatar asked Sep 06 '17 21:09

Goku241


People also ask

How do I read a 100gb file in Python?

Reading Large Text Files in Python We can use the file object as an iterator. The iterator will return each line one by one, which can be processed. This will not read the whole file into memory and it's suitable to read large files in Python.

How do you parse a large text file in Python?

To read large text files in Python, we can use the file object as an iterator to iterate over the file and perform the required task. Since the iterator just iterates over the entire file and does not require any additional data structure for data storage, the memory consumed is less comparatively.

How do I read large text files in pandas?

We can read data from a text file using read_table() in pandas. This function reads a general delimited file to a DataFrame object. This function is essentially the same as the read_csv() function but with the delimiter = '\t', instead of a comma by default.


1 Answers

filehandle.readline() breaks lines via the newline character (\n) - if your file has gigantic lines, or no new lines at all, you'll need to figure out a different way of chunking it.

Normally you might read the file in chunks and process those chunks one by one.

Can you figure out how you might break up the file? Could you, for example, only read 1024 bytes at a time, and work with that chunk?

If not, it's often easier to clean up the format of the file instead of designing a complicated reader.

like image 196
Danielle M. Avatar answered Sep 30 '22 01:09

Danielle M.