2017-08-30 100 views
1

试图将临时文件加载到熊猫数据框中并引发错误。不知道如何从temp文件中获取解析的数据到稍后使用的数据框中。从临时文件创建数据帧

line = [] 
for x in readMe: 
    line.append(" ".join(x.split())) 
with tempfile.NamedTemporaryFile() as temp: 
    for i in line: 
     " ".join(i.split(None)) 
     temp.write("%s\n" % i) 
    df = pd.read_csv(temp.name, sep=' ', names=curves, skiprows=dataStart, header=None) 

回溯(最近通话最后一个): 文件 “C:/ LAS Load.py”,第42行,在 ... 回报FUNC(* ARGS,** kwargs) 类型错误:一字节状对象是必需的,而不是'str'

回答

0

我想你想在temp.name上加上'file://'。在通过两个制表位取消缩进df分配之后。 i.split(None)很奇怪,看起来就像[i],而' '.join([i])没有副作用。也许另一个复制粘贴打嗝?

+0

您最近不用缩进一个制表符,所以现在我们在'with'下面看到'for'和'df ='。这样做的麻烦在于你真的想首先退出'with',所以它有机会'临时关闭'临时文件描述符,然后再尝试''read_csv()'该文件。 –

+0

我相信临时文件将被删除,并且无法使用语句之外的任何东西? – JRod

+0

或者,您可以传递打开的'temp'描述符而不是'temp.name'。不确定是否需要首先将fseek放在它的前面。 –

0

你没有告诉我们什么readMe包含,特别是它导致i有什么类型。如果可能的话,你可以在python3下运行它吗?如果没有,向我们展示一些细节,如type(i),并做一个微不足道的temp.write('hello'),所以很明显,文件描述符是可写的。它仍然没有明显的影响行哪一方41:

 " ".join(i.split(None)) 

的 '%s' 的%我基本上采取STR(I)。也许我们正在寻找的是i.encode('utf8'),或传递temp file encoding