Le vendredi 15 juin 2018 12:36:40 UTC+2, Steven D'Aprano a écrit : > On Fri, 15 Jun 2018 01:01:03 -0700, francois.rabanel wrote: > > > I work with a file which contains millions lines, a simply file.read() > > and I'm running out of memory > > Assuming each line is on average a hundred characters long, a million > lines is (approximately) 100 MB. Even on a computer with only 2GB of > memory, you should be able to read 100 MB. > > But you shouldn't: it is much better to process the file line by line. > > > # Don't do this: > with open(pathname) as f: > text = f.read() # Slurp the entire file into memory at once. > ... > > # Do this instead > with open(pathname) as f: > for line in f: > # process one line at a time > > > You said you are running out of memory, earlier you said the computer was > crashing... please describe exactly what happens. If you get a Traceback, > copy and paste the entire message. > > (Not just the last line.) > > > > > -- > Steven D'Aprano > "Ever since I learned about confirmation bias, I've been seeing > it everywhere." -- Jon Ronson
I resolve my problem and when I look to my solution I don't understand why I didn't do it earlier :) with open(path) as file: result = [] for line in file: find_regex = re.search(regex,line) if find_regex: result.append(find_regex.group()) if len(result) == 0: sys.exit('Regex not found') elif result[0] == '': sys.exit('Whitespace as regex don\'t work') I was looking for a way to check if the regex's user was correct or not -- https://mail.python.org/mailman/listinfo/python-list