【发布时间】:2013-07-20 22:40:55
【问题描述】:
我正在尝试将整个文件提取到内存中(完成 - 使用 StringIO) - 但就我所见,这些对象的行为并不完全像“真实”文件 - 我得到了全部内容,或者我一次可以读取一行,但我不知道如何应用此模式:
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()
EDIT#2:但是我想错了树:我也无法让磁盘上的版本工作('IOError: File not open for reading' - 当我调用 read在已经打开的文件上...) 编辑#3:放弃了 StringIO (不需要它) - 根据答案使用分割线。
我将把代码和 cmets 留在这里 - 以防万一有用。 (即使是死胡同)。
【问题讨论】:
-
多年后,我看到你更新了你的问题;您的更新失败,因为您忘记了回溯到 0。