pandasデータフレームをcsv形式(Windowsの場合)の一時ファイルに保存しようとしていますが、次のような問題があります。
[エラー番号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)
以前と同じエラーメッセージが表示されます。ファイルは他の場所では開かれていません。
権限を確認し、 this の投稿に従って、右クリックしてプログラムを管理者として実行し、管理者として実行できます。
To_csvコマンドを使用して、DataFrameをCSV形式でエクスポートできます。以下のコードはデフォルトでデータを現在の作業ディレクトリに保存することに注意してください。ファイルにフォルダ名とスラッシュを追加することで、別のフォルダに保存できます
_verticalStack.to_csv('foldername/out.csv').
_
作業ディレクトリをチェックして、CSVが適切に書き出されていること、およびCSVを開けることを確認してください。必要に応じて、pythonに戻して、正しくインポートされることを確認してください。
_newOutput = pd.read_csv('out.csv', keep_default_na=False, na_values=[""])
_
TemporaryFile()
とは異なり、mkstemp()
のユーザーは、一時ファイルの使用後に一時ファイルを削除する必要があります。
この関数を使用すると、プログラムにセキュリティホールが生じる可能性があります。返されたファイル名を使って何でもできるようになるまでに、誰かがあなたを殴り倒したのかもしれません。 mktemp()
の使用法はNamedTemporaryFile()
で簡単に置き換えることができ、これに_delete=False
_パラメータを渡します。
続きを読む 。
CSV
にエクスポートした後、temp.close()
を使用してファイルを閉じることができます。
_with tempfile.NamedTemporaryFile(delete=False) as temp:
df.to_csv(temp.name + '.csv')
temp.close()
_
同じエラーメッセージが表示され、file_pathに「/df.csv」を追加すると問題が解決しました。
df.to_csv('C:/Users/../df.csv', index = False)
場合によっては、ファイルのパスを確認する必要があります。これには、ファイルの読み取りと書き込みを行うための適切な権限があるかどうかを確認します。特に相対パスを使用する場合。
xxx.to_csv('%s/file.csv'%(file_path), index = False)
場合によっては、同じ名前の別のファイルが存在するというエラーが発生し、以前のファイルを削除して新しいファイルに置き換える権限がありません。
有効なパスとファイル名を指定するだけです
例えば:
final_df.to_csv('D:\Study\Data Science\data sets\MNIST\sample.csv')