- ファイルダウンロード整理は「ダウンロードフォルダを自動で整頓し、必要なファイルだけを安全に扱える状態にする」ための前処理
- ダウンロードフォルダの中身を拡張子ごとに自動仕分けする
- ダウンロード直後のファイルだけを検出して処理する
- ダウンロードファイルを業務ルールに合わせてリネームする
- 不要ファイル(古い版・一時ファイル)を自動削除する
- ダウンロードファイルを自動で別フォルダへ移動する(処理フローの自動化)
- 例題①:ダウンロードされた ZIP を自動解凍して整理する
- 例題②:ダウンロードフォルダを「種類別+日付別」に整理する
- pathlib を使った読みやすいダウンロード整理コード
- ファイルダウンロード整理を業務で設計するときの視点
ファイルダウンロード整理は「ダウンロードフォルダを自動で整頓し、必要なファイルだけを安全に扱える状態にする」ための前処理
業務では、ブラウザや外部システムからファイルをダウンロードした後に、次のような作業が必要になることが多いです。
- ダウンロードフォルダが散らかっていて目的のファイルが見つからない
- 不要ファイル(重複・古い版・一時ファイル)が混ざっている
- 拡張子ごとにフォルダへ自動仕分けしたい
- ダウンロード直後のファイルを別フォルダへ移動して処理したい
- ファイル名を業務ルールに合わせてリネームしたい
Python を使うと、これらを完全自動化できます。
ここでは、初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。
ダウンロードフォルダの中身を拡張子ごとに自動仕分けする
拡張子別にフォルダへ振り分けるテンプレート
import os
import shutil
def sort_downloads(folder):
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path):
ext = os.path.splitext(name)[1].lower().replace(".", "")
target = os.path.join(folder, ext)
os.makedirs(target, exist_ok=True)
shutil.move(path, os.path.join(target, name))
print("移動:", name, "→", target)
sort_downloads("downloads")
Python重要ポイント
.csv→downloads/csv/のように自動で仕分けos.path.splitext()で拡張子を安全に取得- フォルダがなければ自動作成されるため手間がない
ダウンロード直後のファイルだけを検出して処理する
「最新のファイル」を取得するテンプレート
import os
def get_latest_file(folder):
files = [
os.path.join(folder, f)
for f in os.listdir(folder)
if os.path.isfile(os.path.join(folder, f))
]
return max(files, key=os.path.getmtime)
latest = get_latest_file("downloads")
print("最新ファイル:", latest)
Python深掘りポイント
- ダウンロード直後のファイルは更新日時が最も新しい
- 「最新ファイルを自動処理する」業務で非常に役立つ
- 例:最新の売上データを自動集計するなど
ダウンロードファイルを業務ルールに合わせてリネームする
日付+業務名などのルールに合わせてリネーム
import os
from datetime import datetime
def rename_download(path, prefix="report"):
folder, name = os.path.split(path)
ext = os.path.splitext(name)[1]
today = datetime.now().strftime("%Y%m%d")
new_name = f"{prefix}_{today}{ext}"
new_path = os.path.join(folder, new_name)
os.rename(path, new_path)
return new_path
print(rename_download("downloads/data.csv"))
Python深掘りポイント
- ダウンロードファイルは名前がランダムなことが多い
- 業務ルールに合わせて統一名にすると管理が楽
- 日付を付けるとバージョン管理がしやすい
不要ファイル(古い版・一時ファイル)を自動削除する
ダウンロードフォルダの「古いファイル」を削除する
import os
import time
def delete_old_downloads(folder, days=7):
limit = time.time() - days * 86400
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path) and os.path.getmtime(path) < limit:
os.remove(path)
print("削除:", path)
delete_old_downloads("downloads", 7)
Python深掘りポイント
- ダウンロードフォルダは放置するとすぐに肥大化する
- 7日・30日などのルールで自動削除すると快適
- 更新日時で判断するため安全性が高い
ダウンロードファイルを自動で別フォルダへ移動する(処理フローの自動化)
例:ダウンロードされた CSV を処理フォルダへ移動
import os
import shutil
def move_csv_to_inbox(downloads, inbox):
os.makedirs(inbox, exist_ok=True)
for name in os.listdir(downloads):
if name.lower().endswith(".csv"):
src = os.path.join(downloads, name)
dst = os.path.join(inbox, name)
shutil.move(src, dst)
print("移動:", src, "→", dst)
move_csv_to_inbox("downloads", "inbox")
Python深掘りポイント
- ダウンロード → 自動移動 → 自動処理という流れを作れる
- CSV だけ、PDF だけなど拡張子フィルタが便利
例題①:ダウンロードされた ZIP を自動解凍して整理する
シナリオ
ダウンロードフォルダに ZIP が来たら自動で解凍したい。
import zipfile
def extract_zip_from_downloads(folder, out="unzipped"):
os.makedirs(out, exist_ok=True)
for name in os.listdir(folder):
if name.lower().endswith(".zip"):
path = os.path.join(folder, name)
with zipfile.ZipFile(path, "r") as z:
z.extractall(out)
print("解凍:", name)
extract_zip_from_downloads("downloads")
Python深掘りポイント
- ZIP 解凍を自動化すると手作業がゼロになる
- 解凍後に元 ZIP を削除する運用も可能
例題②:ダウンロードフォルダを「種類別+日付別」に整理する
シナリオ
ファイル種類ごとにフォルダを作り、その中で日付フォルダを作る。
import os
import shutil
from datetime import datetime
def sort_by_type_and_date(folder):
for name in os.listdir(folder):
path = os.path.join(folder, name)
if os.path.isfile(path):
ext = os.path.splitext(name)[1].lower().replace(".", "")
date = datetime.fromtimestamp(os.path.getmtime(path)).strftime("%Y-%m-%d")
target = os.path.join(folder, ext, date)
os.makedirs(target, exist_ok=True)
shutil.move(path, os.path.join(target, name))
print("移動:", name, "→", target)
sort_by_type_and_date("downloads")
Python深掘りポイント
- 種類別+日付別の二段階整理で検索性が大幅に向上
- 大量ダウンロードがある業務で特に効果的
pathlib を使った読みやすいダウンロード整理コード
Path オブジェクトで直感的に書ける
from pathlib import Path
import shutil
def sort_downloads_path(folder: Path):
for p in folder.iterdir():
if p.is_file():
ext = p.suffix.replace(".", "")
target = folder / ext
target.mkdir(exist_ok=True)
shutil.move(str(p), str(target / p.name))
sort_downloads_path(Path("downloads"))
Pythonメリット
- パス結合が
/で直感的 suffixやstemでファイル名操作が簡単- 保守性が高く、業務コードに向いている
ファイルダウンロード整理を業務で設計するときの視点
- 拡張子ごとに仕分けると検索性が大幅に向上する
- 最新ファイル検出は自動処理のトリガーとして便利
- リネームで業務ルールに合わせた管理ができる
- 古いファイル削除でフォルダ肥大化を防げる
- ZIP 解凍や移動と組み合わせると処理フローが自動化される
