はじめに
PythonでExcelファイルを読み込もうとした際、以下のようなエラーが発生しました。
PermissionError: [Errno 13] Permission denied: 'aaaa.xlsx'
ファイル名は環境によって異なりますが、私の場合は 'majan.xlsx'
を読み込もうとしたときに同じエラーが出ました。
今回はこのエラーの原因と解決方法について調べた内容をまとめておきます。
エラーの原因:Excelファイルが開いたままになっている
このエラーは、読み込もうとしているExcelファイルが別のアプリ(主にExcel)で開かれていたことが原因でした。
Windows環境などでは、開かれているファイルを他のプログラムから同時にアクセス(特に書き込み)しようとするとエラーになる場合があります。
pandasのread_excel()
関数で読み取ろうとしただけでも、ファイルがロック状態にあるとPermissionErrorが出ることがあります。
解決方法:対象ファイルを閉じてから実行する
対処法はシンプルで、該当するExcelファイル(ここでは ‘aaaa.xlsx’)を閉じた状態にしてからPythonプログラムを実行するだけです。
Excelで開いたままになっている場合は、必ず閉じてから再度実行してみてください。
実際にエラーが出たコード
以下は、エラーが発生したときのコードです。
import pandas as pd
tb = pd.read_excel('aaaa.xlsx')
コードの説明
import pandas as pd
→ データ解析ライブラリpandasを読み込んでいます。pd.read_excel('aaaa.xlsx')
→ Excelファイルを読み込んで、tb
という変数にデータを格納しています。
このようにシンプルな読み込み処理でも、対象ファイルが開いたままだとPermissionErrorが出ることがあります。
応用のヒント
- ファイルを自動的に閉じることはできません。ユーザー自身が手動で閉じる必要があります。
- ネットワークドライブや共有ドライブにあるExcelファイルでは、他のユーザーが開いている状態でも同じエラーが発生します。
- 書き込み処理を行う場合(
to_excel()
など)も、ファイルが開いているとPermissionErrorが出るので要注意です。
まとめ
PythonでExcelファイルを扱う際、「PermissionError: [Errno 13] Permission denied」が出た場合は、
まずファイルが開かれていないかを確認することが重要です。特にExcelでファイルを開いたままにしていると、読み込みも書き込みもできない場合があります。
ファイルを閉じるだけで解決することが多いため、慌てずに対応してみてください。
少しでも参考になれば幸いです。