Pythonで”PermissionError: [WinError 32]別のプロセスが使用中です”を解決した方法

permissionError:[WinError 32]別のプロセスが使用中ですのエラー解決

パソコンを変えたらこのエラーが発生してとても焦りました。

結論から言うと、原因は”ExcelがPythonによって開かれたままだったため”でした。

決してパソコンやPython環境が問題ではなく、Pythonでファイルを開く、閉じるコードを追加すれば解決することがわかりました。

エラーになった背景

openpyxlというライブラリを使って、Excelファイルにある値から新規フォルダを作成し、ファイルを移動するプログラムを使っていました。

新しいパソコンにしたところ“PermissionError: [WinError 32]別のプロセスが使用中です”、というエラーが発生し、移動したいファイルがコピーはされるが移動はできない、という状況になりました。

ただし、openpyxlを使わないファイルのコピーや移動だけの処理はできていました。

解決した方法

タスクマネージャーでExcelを終了したり、OneDriveの解除といった操作は関係ありませんでした。

別のプロセスが使用中…というプロセスは、Pythonだったということが判明。

原因解明のヒントとなったのは、

該当ファイルを手動で削除しようとした際に現れた、「pythonによってファイルは開かれているため、操作を完了できません。」というメッセージです。

解決には、openとcloseを使ってファイルを開く、閉じるのコードを追加しました。

#ファイルを開き新規フォルダを作成
file=open("xlsxファイルのパス", "rb"):

#実行したい処理を書く
os.mkdir("新規フォルダのパス")

#ファイルを閉じる
file.close()

#実行したい処理(今回はファイル移動)
shutil.move("xlsxファイル","移動先のパス")

このプログラムを試す前に一度Excelを終了し、Pythonプログラムを作成している環境もshut downして再起動されることをおすすめします。

再度同じエラーが起きたら

続けて実行するとまた同じエラーになる場合があります。

ファイルがPythonによって開かれている可能性があるので、Pythonを書いている環境をshut downして再起動して、実行してみてください。

もしくは、1つのプログラムを次の2つのファイルに分けて実行する方法も試してみてください。

  1. エラーが起きずに処理できている部分 (対象のExcelをopenで開いてfile.close()で終了する)
  2. エラー発生箇所以降の部分(Pythonによって開かれているExcelを終了する必要がある箇所)。対象のExcelをopenで開いてfile.close()で終了した後、実行したい処理を書きます

①を実行し、ファイルを閉じてから②のファイルを実行してみてください。

ABOUT US
中野友梨
旅行業の会社を運営。
慶応義塾大学卒

書類作成、確認作業などに追われる日々の仕事。
一生懸命やっているつもりだった。
計算ミス、手配ミスにヒヤヒヤする日々。
仕事の効率をなんとかしなけらばいけないと思っていたけど、 どうしたらよいのか分からなかった。
Pythonの世界なんて、全く知らなかった。
そんな私がPythonで仕事が効率化されることによって、公私ともに大きく 変わるとは、夢にも思っていなかった..。

業務効率化のためにPythonを始めたことがきっかけで、Pythonにはまりました。(個人利用レベル)
詳細はこちら

労働時間が大きく削減され、仕事が大カイゼンされて自由な時間も生まれました。
私のした素晴らしい経験を共有したい、仕事の効率が悪いけど、どうにかしたいという悩みを持った人々に向けて、 Pythonがいいよ、と教えてあげたい。
このブログでは、私が経験したエラー解決や迷い所、Pythonの活用方法をお伝えします。