title: How to get CSV reader to read a memory file?
body: <p>I'm trying to fetch an entire file into memory (done - using StringIO) - but these objects don't really behave exactly like 'real' files as far as I can see - I get the whole contents, or I can read a line at a time, but I can't work out how to apply this pattern:</p>
  
  <pre><code>import csv 
  with open(#MYMEMORYFILE_HERE#, 'rb') as csvfile:
          spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
          for row in spamreader:
  </code></pre>
  
  <p>Is there a way of treating a memoryfile just like an on-disk file , so I can use the nicer idioms above ?</p>
  
  <pre><code>Python 2.7.4 (default, Apr 19 2013, 18:28:01) 
  </code></pre>
  
  <p>EDIT: Thanks for the answers on this - I think I have narrowed down what was confusing me...but I still have an issue here, the following doesn't output anything? I suspect flushing ?</p>
  
  <pre><code>from csv import reader, writer
  import StringIO
  
  memfile=StringIO.StringIO()
  spamwriter = writer(memfile)
  spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
  spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
  spamreader=reader(memfile)
  for row in spamreader:
          print ', '.join(row)
  memfile.close()
  </code></pre>
  
  <p>EDIT#2: But I'm barking up the wrong tree I think: I couldn't get the on-disk version of this to work either ('IOError: File not open for reading' - when I call the read on the already open file...)
  EDIT#3: abandoned the StringIO (no real need for it) - used splitlines as per the answer.</p>
  
  <p>I'll leave the code and comments here - in case it's useful. (even though it is a cul-de-sac).</p>