2017-08-30 97 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