我试着把StringIO和BytesIO和熊猫混为一谈,并努力解决一些基本问题。例如,我不能让下面的“output”工作,而下面的“output2”工作。但是“输出”更接近于我试图做的真实世界的例子。“output2”中的方法来自一个老熊猫的例子,但对我来说并不是一个有用的方法。
import io # note for python 3 only
# in python2 need to import StringIO
output = io.StringIO()
output.write('x,y\n')
output.write('1,2\n')
output2 = io.StringIO("""x,y
1,2
""")
它们在类型和内容上似乎是一样的:
type(output) == type(output2)
Out[159]: True
output.getvalue() == output2.getvalue()
Out[160]: True
但不,不一样:
output == output2
Out[161]: False
更重要的是我想解决的问题:
pd.read_csv(output) # ValueError: No columns to parse from file
pd.read_csv(output2) # works fine, same as reading from a file
io.StringIO
这里的行为就像一个文件——你写了它,现在文件指针指向了末尾。当你试着在那之后读的时候,在你写的那一点之后就什么都没有了,所以:没有要解析的列。相反,就像处理普通文件一样,从
seek
开始,然后读取:相关问题 更多 >
编程相关推荐