using StringIO to not actually load the file. Should be much faster