[エラーの原因と対処法]Permission denied: xxx[openpyxl]

スポンサードリンク
アイキャッチ Python
過去の自分
過去の自分

openpyxlで作ったプログラムを動かしたら、
「PermisshionError: Permission denied: xxx」
というエラーが出た…。

いったいどうしたらいいの?

今の自分
今の自分

なるほど。
では「PermisshionError: Permission denied: xxx」
が出る原因と対処法を解説いたしましょう!

「PermisshionError: Permission denied: xxx」が出る原因と対処法を
Python歴3年の私が、できるだけわかりやすく解説し、解決に導きます。

スポンサードリンク

「PermisshionError: Permission denied: xxx」とはどんなエラー?

まず「PermisshionError: Permission denied: xxx」というエラーは、どんな時に出るエラーなのかを見ていきましょう。

このエラーは「xxxが開かれたままだから、編集できないよ!」と言ってきています。

「Permission denied」を直訳すると、「許可が拒否されました」となります。

これだけではわかりませんよね。

「Permission」は「許可・承認・同意」などを意味します。
「denied」は「deny」の過去形で、「拒否・否認・拒む」などの意味が含まれます。

これでもまだわからないと思います。

要は「xxxを編集するためにアクセスしようとしたが、承認されず拒否された」と言ってきています。

ではxxxにアクセスできない原因はどこにあるのでしょうか。

スポンサードリンク

「PermisshionError: Permission denied: xxx」が出る原因

前項でほとんど解説してしまいましたが、このエラーが出る原因はつまり

xxxを開いたままにしているから

です。

開いたままにしていると聞いて、こんな経験はありませんか?

会社の共有フォルダに入っているファイルを開こうとしたら、
誰かが既に開いていて編集できなかった…。

この場合、フロア中に響き渡る声で、「誰!?xxx開いてるの!?早く閉じて!」
と言いたくなりますよね。

このような経験が無い方向けに、別の場面で例えると、

朝、トイレに入ろうとしたら、
母「今、お父さん入っているよ」
あなた「えー!急いでるのに入れないじゃん!早く出て!」

という感じでしょうか…。

今回のエラーはコレと同じことが起きています。

プログラム側は、「おい!xxxが開いたままだから、編集できないじゃん!閉じてよ!
と言ってきている訳です。

しかしながら、ファイルを開いていないのに「PermisshionError」が出る場合が稀にあります。
そんな時は、そのファイルが読み取り専用になっている場合がありますので、確認してみましょう。

スポンサードリンク

「PermisshionError: Permission denied: xxx」の対処法

前項で、xxxを開いたままにしているから、アクセスできないのが原因とお伝えしました。

では対処法を2つ紹介いたします。

  • xxxを閉じる
  • コンピュータを再起動する
  • ファイルの読み取り専用を解除する

xxxを閉じる

基本的にはxxxを閉じることで解決します。
しかしながら、開いていないのにこのエラーが出る場合があります。

その対処法が次です。

コンピュータを再起動する

開いていないのにもかかわらずこのエラーが出る場合は、ひとまずコンピュータを再起動してみてください。

前項で例に挙げた「共有フォルダのファイル」を開こうとした時も、他の誰も開いていないのに編集できない時がありますよね。

何らかの不具合で、コンピュータが「ファイルを開いている」と勘違いしているのです。

ちょっとめんどうですが、コンピュータを再起動して再度トライしてみましょう。

ファイルの読み取り専用を解除する

読み取り専用になっているファイルを編集した場合も、「PermisshionError」が発生します。
読み取り専用になっている場合は解除しましょう。

自動で解除する方法は、下記記事で解説しております。

スポンサードリンク

早めにエラーを出すコツ

【プログラムを実行してから数時間後に「PermisshionError」が出て泣きたくなった】
という経験はありませんか?
これは「PermisshionError」が出るタイミングが関係しています。

ファイルを開こうとしたときにエラーが出ると思いがちですが、
実際は「ファイルを上書き保存しようとしたとき」にエラーが出ます。

見本

プログラムを処理して、最後に上書き保存しようとしてエラーが出るのです。
なので時間のかかるプログラムでは、その分エラーが出るのが遅い傾向にあります。
そこで、エラーを早めに出すコツがあります。

プログラムを実行する前に、ひとまず上書き保存してしまいましょう!

import openpyxl

wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
wb.save('input.xlsx')

#実際に処理したいプログラム

wb.save('input.xlsx')

5行目でひとまず上書き保存することによって、ファイルが開いたままだと、この時点でエラーが出ます。
時間にするとほんの一瞬です。

実際にエラーが出る可能性があるため対処法とはいえませんが、時間短縮にはつながるかと思います。

スポンサードリンク

最後に

「PermisshionError: Permission denied: xxx」の原因と対処法を解説いたしました。

このエラーが出たら、「対象ファイルを閉じる」と覚えてください。

このブログでは、Pythonに関する情報を配信しています。
この記事がわかりやすいと感じた方は、ぜひ他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました