2017-04-07 58 views
0

我試圖存儲大熊貓據幀到CSV格式的臨時文件(在Windows中),但我被擊中:權限被拒絕時,大熊貓據幀到臨時文件CSV

[錯誤13]許可被拒絕:「C :\ Users \ Username \ AppData \ Local \ Temp \ tmpweymbkye'

import tempfile 
import pandas 

with tempfile.NamedTemporaryFile() as temp: 
    df.to_csv(temp.name) 

其中df是數據幀。我也試圖改變temp目錄到一個我相信我有寫權限:

tempfile.tempdir='D:/Username/Temp/' 

這給了我同樣的錯誤消息

編輯:

出現臨時文件被鎖定編輯當我改變回路爲:

with tempfile.NamedTemporaryFile() as temp: 
    df.to_csv(temp.name + '.csv') 

我可以寫在臨時目錄中的文件,但後來它不是在循環結束時自動刪除,因爲它是不更長的臨時文件。

但是,如果我的代碼更改爲:

with tempfile.NamedTemporaryFile(suffix='.csv') as temp: 
    training_data.to_csv(temp.name) 

我像以前一樣得到同樣的錯誤消息。該文件沒有在其他地方打開。

+0

我不太瞭解tempfile模塊以給出正確的答案。 但看看這裏(最後):https://github.com/pandas-dev/pandas/issues/1047 只是做df.to_csv(溫度)(不含.name) – FLab

+0

我認爲這是一個錯字他的代碼返回這個錯誤:「需要類似字節的對象,而不是'str'」 – thebigspin

+0

您是否錯誤地將文件保留在打開狀態?這會給你同樣的錯誤。 –

回答

0

檢查您的權限,根據this的帖子,您可以通過右鍵單擊並以管理員身份運行您的程序。

我們可以使用to_csv命令以CSV格式導出DataFrame。請注意,下面的代碼默認將數據保存到當前工作目錄中。我們可以通過添加文件夾名和斜線的文件

verticalStack.to_csv('foldername/out.csv'). 

退房工作目錄,以確保正確的CSV寫出來,你可以打開它,它保存到不同的文件夾!如果你想,試着把它帶回python,以確保它正確導入。

newOutput = pd.read_csv('out.csv', keep_default_na=False, na_values=[""]) 

ref

不像TemporaryFile()mkstemp()用戶負責的時候用它做刪除臨時文件。

使用此功能可能會在程序中引入安全漏洞。當你回過頭來對文件名做任何事情時,其他人可能會毆打你。 mktemp()用法可以用NamedTemporaryFile()輕鬆替換,並將其傳遞給參數delete=False

Read more

輸出到CSV後,您可以用temp.close()關閉文件。

with tempfile.NamedTemporaryFile(delete=False) as temp: 
    df.to_csv(temp.name + '.csv') 
    temp.close() 
+0

以管理員身份運行並沒有改變任何內容,並且我嘗試更改tempdir我肯定有寫入權限 – thebigspin

+0

@thebigspin我改變了我的答案 – RaminNietzsche

+0

我編輯了我的問題以添加更多信息。 – thebigspin

0

有時,它給出了錯誤只是餘弦存在具有相同名稱的另一個文件,並沒有權限刪除較早的文件,並用新的文件替換它。

  1. 所以要麼保存它不同的文件命名。 或
  2. 如果您在Jupyter筆記本電腦或其他類似的環境中工作,刪除該文件執行讀取它變成memory.So細胞後,當你執行它寫入到本機的電池,沒有其他文件以該名稱存在。