gpt4 book ai didi

python - 如何让 CSV 阅读器读取内存文件?

转载 作者:太空狗 更新时间:2023-10-29 22:08:06 24 4
gpt4 key购买 nike

我正在尝试将整个文件提取到内存中(完成 - 使用 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()

编辑#2:但我认为我找错了树:我也无法使它的磁盘版本工作('IOError:文件未打开以供读取' - 当我调用读取在已经打开的文件上...)编辑#3:放弃了 StringIO(没有真正需要它)——根据答案使用分割线。

我将在此处保留代码和注释 - 以防有用。 (即使它是死胡同)。

最佳答案

如果要将整个文件读入内存,而且是文本,则不需要打开 StringIO 对象。只需将其作为字符串读取即可!

with open(filename, 'r') as file:
in_memory_file = file.read()

然后您可以使用splitlines 以迭代打开的文本文件的方式迭代它。

spamreader = csv.reader(in_memory_file.splitlines(), delimiter=' ', quotechar='|')
for row in spamreader:
pass

关于python - 如何让 CSV 阅读器读取内存文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com