こんにちは。
Pythonでのファイル削除について、お聞きしたい内容があり、質問させていただいております。
前提・実現したいこと
実行するスクリプト(file_delete.pyとします。)と、削除対象のファイルとが異なるドライブに存在しているとき、
お互いの配置を変えずに削除を行うにはどのようにすればよろしいでしょうか?
(具体的な環境)
C └ Users └ User_name └ Desktop └ folder └ file_delete.py (実行ファイル)
D ├ hoge1 │ └ a.txt (削除対象ファイル) │ ... │ └ hoge2 └ b.txt (削除対象ファイル) # 削除対象のファイルの所在は不明です。(ファイル名はわかっています。)
発生している問題・エラーメッセージ
上記のように、削除対象のファイル名のみ判断しているので、
globを活用した再帰的な検索でファイルを削除することまではできました。
ですが、それは実行ファイルと同じドライブに存在している場合のみです。
該当のソースコード
Python
1 2# file_delete.py 3 4import glob 5import os 6import datetime as dt 7 8 9# 変数の定義 10 11# ログファイルのタイトルの変数 12now = dt.datetime.now() 13time = now.strftime("%Y%m%d") 14 15 16# 削除対象のファイルリスト 17file_list = [ 18 "a.txt", 19 "b.txt", 20 "c.txt", 21] 22 23 24 25 26# ファイル削除実行部分 27for file in file_list: 28 with open("./log/{}.log".format(time), "a") as f: 29 f.write(file + "\n") 30 matchPath = glob.glob("**/{}".format(file), recursive=True) 31 # matchPathはリストで取得される 32 if len(matchPath) == 0: 33 not_file = "{}は見つかりませんでした。\n".format(file) 34 with open("./log/{}.log".format(time), "a") as f: 35 f.write(not_file) 36 else: 37 os.remove(matchPath[0]) 38 delete_file = "delete>>" + matchPath[0] + "\n" 39 with open("./log/{}.log".format(time), "a") as f: 40 f.write(delete_file)
試したこと
matchPath = glob.glob("**/{}".format(file), recursive=True)
上記部分において、「"**/{}"」の部分を「"../{}"」などに変更してみましたが、
Cドライブのみで動作しました。
補足情報(FW/ツールのバージョンなど)
Python 3.9.1
VScode 1.53.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/02/16 09:53