Gしょっく 指時計
みにみに
わんわん
う~~~ん
あいであ商品
なのか???
でも
じじぃ~ には
無理!
小さくて 時間 わからん!
目が 目が MEGA~~~
じじぃ~
めるこ よ おまえも か!
わんわん
むか~~~し
むかし
まだ
メルコ
だった 会社
が
BDドライブの 販売を
終了するという
ネットニュースをみた
まあ
ぱな そに~ などの
親分が 撤退したんだから
当然???なのか?
外付けの
USB接続の BDドライブ
じじぃ~的には
好きでは なかったが
そうなんですか・・・
もう
BDは 終わりに 向かって
一直線 なのかな???
でも
不思議 なのは
アニメ番組見ると
CMで
ものすげ~~~
強気の
価格設定の
BD販売しているんだよね
あれ!
売れ行き ど~~~なの?
あの 強気設定で
売れているの?
こんど
生成AI様に
聞いてみよう
めるこ さん・・・
そうだよね;;
昔の社名から
抜け出せない
お年頃♪
じじぃ~
250円 らーめん
ねっとにゅーす
で
みた
ちらみ なので
詳細不明だが
じじぃ~ の 近所にも
出店していただきたい
固定資産税 やらなんやら
同じじゃないから
らーめん いっぱい
500円
ちゃーしゅー
なると
のり
とっぴんぐ 全部
別料金 でも いいです
だれか~~~
思えば
らーめん店 行って ないよね???
ていうかさ・・・
らーめん店 へってないかい???
じじぃ~ の 徘徊る~と
だけか??
じじぃ~
python テキスト振り分け
こけこっこ~~~
生成AIとの
チャット ログ
たまりにたまったw
もう なにがなにやら・・・
そこで
【Gemini】様に
泣きついた
テキストファイルの
中身に 応じて
4択 分類にしてちょ~~~だい
# ==== 【Gemini】様
承知いたしました。実際に動かしてみると、元の場所にフォルダが散らばるより、一箇所にまとまっている方が管理しやすいですよね。
ご要望に合わせて、以下の仕様に変更したスクリプトを作成しました。
主な変更点
1. コピーに変更: `shutil.move` ではなく `shutil.copy2` を使用し、元のファイルは残します。
2. 出力先を固定: `S:\_TXT\■_生成AI-分類` の中に 4つのフォルダ(text/python/micropython/arduino)を作成し、そこに集約します。
3. 同名ファイルの連番処理: すでに同名のファイルがある場合、`abc_1.txt`, `abc_2.txt` のように自動で連番を付与して保存します。
拡張版 Pythonスクリプト: Code_Classifier_Collector.py
```python
import os
import shutil
import pathlib
# --- 設定項目 ---
SOURCE_DIR = r"S:\_TXT\■_生成AI"
TARGET_ROOT = r"S:\_TXT\■_生成AI-分類"
# カテゴリごとの特徴的なキーワード
KEYWORDS = {
"micropython": [
"from machine import", "import utime", "Pin(", "PWM(", "ADC(", "I2C(", "UART("
],
"arduino": [
"void setup()", "void loop()", "pinMode(", "digitalWrite(", "analogRead(", "#include <", "Serial.begin"
],
"python": [
"import ", "def ", "class ", "if __name__ ==", "print(", "from "
]
}
def judge_content(file_path):
"""ファイルの中身を解析してカテゴリを判定"""
try:
with open(file_path, 'r', encoding='utf-8') as f:
lines = [f.readline() for _ in range(150)]
content = "".join(lines)
if sum(1 for kw in KEYWORDS["micropython"] if kw in content) >= 1:
return "micropython"
if sum(1 for kw in KEYWORDS["arduino"] if kw in content) >= 1:
return "arduino"
if sum(1 for kw in KEYWORDS["python"] if kw in content) >= 2:
return "python"
return "text"
except Exception:
return "text"
def get_unique_path(target_dir, file_name):
"""同名ファイルがある場合に連番を付与する (abc.txt -> abc_1.txt)"""
base = pathlib.Path(file_name)
stem = base.stem
suffix = base.suffix
counter = 1
new_path = target_dir / file_name
while new_path.exists():
new_name = f"{stem}_{counter}{suffix}"
new_path = target_dir / new_name
counter += 1
return new_path
def main():
source_path = pathlib.Path(SOURCE_DIR)
target_root_path = pathlib.Path(TARGET_ROOT)
# カテゴリフォルダの準備
categories = ["text", "python", "micropython", "arduino"]
for cat in categories:
(target_root_path / cat).mkdir(parents=True, exist_ok=True)
# 再帰的に全 .txt ファイルを取得
files = list(source_path.rglob("*.txt"))
print(f"★ {len(files)} 個のファイルをスキャン中...")
copy_count = 0
for file_path in files:
# 分類先フォルダ自体をスキャン対象から外す(無限ループ防止)
if TARGET_ROOT in str(file_path):
continue
# 判定
category = judge_content(file_path)
# 保存先ディレクトリ
dest_dir = target_root_path / category
# 重複回避した保存先パスを取得
final_dest = get_unique_path(dest_dir, file_path.name)
try:
# コピー実行 (shutil.copy2 はメタデータも保持します)
shutil.copy2(str(file_path), str(final_dest))
print(f"[{category:12}] {file_path.name} -> {final_dest.name}")
copy_count += 1
except Exception as e:
print(f"[Error] {file_path.name} のコピー失敗: {e}")
print(f"\n完了! {copy_count} 個のファイルを '{TARGET_ROOT}' に整理しました。")
if __name__ == "__main__":
main()
```
使いこなしのポイント
* 「コピー」なので安心: 元の `S:\_TXT\■_生成AI` フォルダ内のファイルは一切変更されません。
* 整理用フォルダ: `S:\_TXT\■_生成AI-分類` を見れば、すべてのファイルが4つのフォルダに綺麗に分かれています。
* 連番の付き方: `test.txt` が重複した場合、次は `test_1.txt`、その次は `test_2.txt` と増えていきます。
これでかなり見通しが良くなるはずです。ぜひ試してみてください!
# ==============================
# ==== じじぃ~
実行ログ の 終わり部分
[text ] 高輝度自己点滅型LED_ 青色.txt -> 高輝度自己点滅型LED_ 青色_1.txt
完了! 4395 個のファイルを 'S:\_TXT\■_生成AI-分類' に整理しました。
深い階層を
あっちいったり
こっちいったり
しなくて 済むように
なりました
ありがとうございます
さてもさても
4395 個のファイル
4395 枚の 用紙とする!
人間様が
この 用紙の内容は・・・
うん python だ
うん text だ
と 目視確認 振り分け
どえりゃ~~~ 時間が
かかる
が!
生成AI様の 作った
pythonスクリプト
1分くらいで
はい 完了!
人間 大丈夫か???
きゃ◎ゃーん の 世界に・・・
じじぃ~

