ファイル全体をメモリに取り込もうとしていますが(StringIOを使ってdoneを実行しました)、これらのオブジェクトは実際には実際のファイルとまったく同じように振る舞いません - 私は全体の内容を取得します。一度にラインを読んで、私はこのパターンを適用する方法を考え出すことはできません。CSVリーダーにメモリファイルを読み込ませるには?
import csv
with open(#MYMEMORYFILE_HERE#, 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
だけで、ディスク上のファイルのようにmemoryfileを治療する方法はありますので、私はよりよいイディオムを使用することができます上記?
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
EDIT:これについて答えてくれてありがとう - 私は私が私を混乱させたものを絞り込んたと思う...しかし、私はまだここに問題があり、次は何も出力しないのですか?私は洗い出しを疑う?
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()
EDIT#2:しかし、私は、私が思う間違っツリーまで吠えている:私はこれのディスク上のバージョンがどちらかの仕事を得ることができませんでしたが(「例外IOError:読取り用に開かれていないファイル」 - とき EDIT#3:StringIOを放棄しました(本当に必要ありません) - 答えごとに分割線を使用しました。
ここにコードとコメントを残しておきます(便利な場合に備えて)。 (たとえそれが袋小路であっても)。
spamreader = csv.reader(MYMEMORYFILE_HERE, delimiter=' ', quotechar='|')
すべてのことcsv.reader()
ニーズ反復可能なオブジェクトである:StringIO
オブジェクトをオープンする必要はありません
年後、私はあなたの質問を更新しました。あなたが* 0を求めることを忘れたので更新が失敗します。 –