PythonでPermissionErrorが出てCSVを保存できない

PythonでPermissionErrorが出てCSVを保存できない

記事
IT・テクノロジー
カテゴリ:Python

CSVの保存で「PermissionError: Permission denied」と出たら、まず保存先を確認しましょう。元データを残して、別名で保存を試す方法を紹介します。

1.保存先をファイル名まで確認する

エラー末尾に出た保存先を、次の「output.csv」に入れて確認します。

from pathlib import Path
p = Path("output.csv")
print("保存先:", p.resolve())
print("保存先がフォルダー:", p.is_dir())
print("親フォルダーがある:", p.parent.is_dir())

「保存先がフォルダー」がTrueなら、末尾に「output.csv」などのファイル名を加えます。「親フォルダーがある」がFalseなら、場所を確認してください。Trueでも書き込めるとは限りません。確認中にもPermissionErrorが出る場合は、手順3へ進みます。

2.同じファイルを開いていないか確認する

Windowsでは、Excelなどで開いているファイルへの上書きが拒否されることがあります。同じファイルへ保存する必要がある場合は、必要な編集を保存してから対象ファイルを閉じます。

まずは、次の別名保存で試しても大丈夫です。

3.元ファイルを残して別名保存する

02_保存先と別名保存_説明図.png
自分が保存できる既存のフォルダーと、未使用のファイル名を指定します。次はpandasのCSV保存例です。「C:/作業」はWindowsの例なので、自分の保存先へ置き換えてください。保存したいデータがdfに入っている状態で実行します。

from pathlib import Path
p = Path("C:/作業/output_check_01.csv")
df.to_csv(p, index=False, mode="x")

mode="x"なら、同名ファイルを上書きせずに止まります。FileExistsErrorが出たら、末尾を「02」にするなど、別の未使用名に変えてください。encoding・区切り文字・indexは元の処理に合わせます。

コード確認環境:Python 3.12・pandas 2.2/Linux

保存できたら、出力した列名・行数・先頭の数行を確認しましょう。別名で保存できても、元のエラーの原因が確定するわけではありません。

別の保存先でも失敗する場合は、エラー全文と保存先を管理者や作成者に相談してください。権限設定を変える前に、確認するのが安心です。

カスタマイズやご要望がある場合は、お気軽にご相談ください。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す