移動に先だって、ファイルの内容をチェックをしているとか、常駐しているウイルス対策ソフトが邪魔してませんかね?
リソースモニタ等で使用中のファイルを確認し、どのプロセスがそのファイルを開いているのか調べてしてみては?
pythonでのファイル移動
ネットで拾ったサンプルコードを写経して勉強している超が付く初心者です。よろしくお願いします。
使い終えたファイルを複数アーカイブファイルに移動したいのですが、なぜか1つだけ毎回残ってエラーが出ます。
別のプログラム内で全く同じコードを使いまわした場合にエラーは出ず全て移動できています。
エラーが出ない方はテキストファイルで、エラーが出るのはlzhファイルの移動です。
プロセスはファイルにアクセスできません。別のプロセスが使用中です
例)
shutil.move(item,"daydrive/archive/bangumihyou_lzh/")
File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\shutil.py", line 883, in move
os.unlink(src)
PermissionError: [WinError 32] プロセスはファイルにアクセスできません。別のプロセスが使用中です。: 'daydrive/dayMy Drive/bangumihyou_lzh\b240224.lzh'
python
#エラーが出ないコード↓
print("ファイルを移動します")
move_file_list = glob.glob("daydrive/dayMy Drive/bangumihyou_txt/" + "*")
for item in move_file_list:
shutil.move(item,"daydrive/archive/bangumihyou_txt/")
print("ファイルを移動しました")
#エラーが出るコード↓
print("ファイルを移動します")
move_file_list = glob.glob("daydrive/dayMyDrive/bangumihyou_lzh/*.lzh")
for item in move_file_list:
shutil.move(item,"daydrive/archive/bangumihyou_lzh/")
print("ファイルを移動しました")
毎回同じ位置に複数の同じファイルをおいて再現をしています。
エラーがでない方は全て指定したフォルダに移動できています。
エラーが出る方は指定したフォルダに全部移動できていますが、元のフォルダになぜか1つだけ毎回残ります。(移動先と重複になる)。
元のフォルダに残るファイルですが前回はyama.lzh,今回はkawa.lzhなど実行するたびに変わります。
最後の1つも移動先ファイルにあるので自分ではshutil.moveの動きが”コピーをして移動→元を削除”で、なぜか最後の削除だけできてないのかな”くらいしかわかりません。
何がわからないかもわからない状態で説明不足もあるとは思いますがどうぞアドバイスのほど、よろしくお願いします。
移動に先だって、ファイルの内容をチェックをしているとか、常駐しているウイルス対策ソフトが邪魔してませんかね?
リソースモニタ等で使用中のファイルを確認し、どのプロセスがそのファイルを開いているのか調べてしてみては?
@y02652162
Questionerコメントありがとうございます。早速リソースモニタをキーワードに調べてみます。
ありがとうございました!
@y02652162
Questioner調べたところプログラム内で使用中→移動のコード自体は問題なし。
フォルダ内をリスト化して解凍をする際に、解凍モジュールが最後のファイルを握ったまま(最後なので次のファイルを掴むために離す動作がなく握りっぱなし→使用中になる)と判断しました。
パーミッションを与えれば解決するみたいですが、今回は早く次に進みたかったため移動の部分だけのプログラムを別で用意することにしました。ありがとうございました
。