ファイル全体をメモリにフェッチしようとしています (完了 - StringIO を使用) - しかし、これらのオブジェクトは、私が見る限り「実際の」ファイルとまったく同じように動作しません - 内容全体を取得するか、または読み取ることができます一度に1行ずつですが、このパターンを適用する方法がわかりません:
import csv
with open(#MYMEMORYFILE_HERE#, 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
メモリファイルをディスク上のファイルと同じように扱う方法はありますか?
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
編集:これについての回答に感謝します-私を混乱させていたものを絞り込んだと思います...しかし、ここにはまだ問題があります.次は何も出力しませんか? フラッシングが疑われますか?
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()
編集#2:しかし、私は間違ったツリーを吠えていると思います:これのオンディスクバージョンも動作させることができませんでした(「IOError:読み取り用にファイルが開かれていません」-すでに読み取りを呼び出すとファイルを開く...) 編集#3:StringIOを放棄しました(実際には必要ありません)-回答に従って分割線を使用しました。
コードとコメントをここに残しておきます - 役に立つ場合に備えて。(行き止まりですが)。