60歳を迎えて、思うこと。 -113ページ目

60歳を迎えて、思うこと。

いつの間にか、「60」という年月が経ちました。
残り少ないか多いか?わかりませんが。
じじぃ~の「ひとりごと」を細々と続けられれば。。。

Dimora to xlsx (3)

ぶるれこ様の

データを
なるべく

手間を かけないで!

xlsxで 読み込めるようにする

以前も 作ったけど・・・

ぜんめんりにゅ~ある である

製作:Microsoft Copilot様

OnLineBackUp で ありんす♪

# ==== csv to pandas to xlsx 変!


# 2. 「録画先」列をチェックして **本体** と **USB-HDD** に分ける  
# 3. それぞれを Excel (`.xlsx`) に出力  
#    - 本体 → `recList-本体.xlsx`  
#    - USB-HDD → `recList-USB.xlsx`  
# 4. タイトル行(カラム名)は両方のファイルに必ず含める  
# 5. 出力形式は UTF-8 → Excel形式(openpyxlで後処理可能)

## 📂 完成版コード例:`3-reclist_pandas_xlsx.py`

import pandas as pd
import os

# === 定数 ===
BASE_DIR = r"F:\_pypy\DIGA\COPY"
INPUT_FILE = os.path.join(BASE_DIR, "recList.csv")

OUTPUT_FILE_MAIN = os.path.join(BASE_DIR, "recList-本体.xlsx")
OUTPUT_FILE_USB  = os.path.join(BASE_DIR, "recList-USB.xlsx")

def split_and_export(input_file, output_main, output_usb):
    try:
        # CSV読み込み(カラム行あり)
        df = pd.read_csv(input_file, encoding="utf-8")

# ==== ここから
        # 列の削除: 複数列を削除する場合は drop を使用
        df = df.drop(columns=["DMR-", "視聴/未"])

        # 列の挿入: insert を使う(位置を指定して1列ずつ)
        # 例: 先頭に「行」列を追加(値は空文字)
        df.insert(0, "行", "")
        df.insert(1, "頁", "")
        df.insert(2, "時間", "")
        df.insert(3, "ももんが", "")

        # 列の並べ替え: DataFrame の列をリストで再指定
        df = df[[
            "□放送開始日時□",
            "□放送局□",
            "☆番組タイトル☆",
            "行", "頁", "分", "時間", "MODE", "ジャンル", "録画先"
        ]]

# ==== ここまで
                # 「録画先」が本体の行を抽出
        df_main = df[df["録画先"] == "本体"].copy()
        # 連番付与(1から開始)
        df_main["行"] = range(1, len(df_main) + 1)
        # 「頁」列を数値形式で 1 で埋める
        df_main["頁"] = 1

        # 「録画先」がUSB-HDDの行を抽出
        df_usb = df[df["録画先"] == "USB-HDD"].copy()
        # 連番付与(1から開始)
        df_usb["行"] = range(1, len(df_usb) + 1)
        # 「頁」列を数値形式で 1 で埋める
        df_usb["頁"] = 1

        # 列の並べ替え(存在する列だけを安全に並べ替え)
        desired_cols = [
            "□放送開始日時□",
            "□放送局□",
            "☆番組タイトル☆",
            "行", "頁", "時間", "MODE", "ジャンル",  "分", "録画先"
        ]
        df_main = df_main[[c for c in desired_cols if c in df_main.columns]]
        df_usb  = df_usb [[c for c in desired_cols if c in df_usb.columns]]

        
        
        # Excel出力(タイトル行=カラム名を含む)
        if not df_main.empty:
            df_main.to_excel(output_main, index=False, engine="openpyxl")
            print(f"出力完了: {output_main}")
        else:
            print("本体データがありません")

        if not df_usb.empty:
            df_usb.to_excel(output_usb, index=False, engine="openpyxl")
            print(f"出力完了: {output_usb}")
        else:
            print("USB-HDDデータがありません")

    except FileNotFoundError:
        print(f"入力ファイルが見つかりません: {input_file}")
    except Exception as e:
        print(f"エラー発生: {e}")

if __name__ == "__main__":
    split_and_export(INPUT_FILE, OUTPUT_FILE_MAIN, OUTPUT_FILE_USB)

## ✅ このスクリプトの動き
# - `recList.csv` を pandas で読み込む  
# - 「録画先」列を基準にフィルタリング  
# - 本体用とUSB用に分けて `.xlsx` 出力  
# - 出力ファイルには必ずカラム行(タイトル行)が含まれる  

# これで **第三弾の仕様**は完成です!  
# 👉 次のステップでは、openpyxlを使って「セルの書式設定」や「シートの加工」も可能になります。  
# 試しにこのコードを走らせてみますか?

# ==============================

 

Dimora to xlsx (2)

ぶるれこ様の

データを
なるべく

手間を かけないで!

xlsxで 読み込めるようにする

以前も 作ったけど・・・

ぜんめんりにゅ~ある である

製作:Microsoft Copilot様

OnLineBackUp で ありんす♪

# ==== tsv to csv & replace 変!


import os

# === 定数 ===
BASE_DIR = r"F:\_pypy\DIGA\COPY"
TSV_FILE = os.path.join(BASE_DIR, "recList.tsv")
OUTPUT_FILE = os.path.join(BASE_DIR, "recList.csv")

# 置換ルール(例)
REPLACEMENTS = {
    "録画時間 (分)": "分",
    "録画モード": "MODE",
    "未視聴": "未",
    "放送局名": "□放送局□",
    "放送開始日時": "□放送開始日時□",
(中略)
    "15倍録": "x15",
    "10倍録": "x10",
    "8倍録": "x8",
    "4倍録": "x4",
    "3倍録": "x3",
    "1.5倍録": "x1.5",
}

def replace_strings(text: str, replacements: dict) -> str:
    """文字列置換をまとめて実施"""
    for old, new in replacements.items():
        text = text.replace(old, new)
    return text

def tsv_to_csv(tsv_path: str, csv_path: str, replacements: dict):
    """TSVを読み込み、置換してCSVに保存"""
    try:
        with open(tsv_path, "r", encoding="utf-8") as f:
            content = f.read()
        
        # 文字列置換
        replaced = replace_strings(content, replacements)
        
        # TSV → CSV(タブをカンマに変換)
        csv_content = replaced.replace("\t", ",")
        
        # 出力
        with open(csv_path, "w", encoding="utf-8", newline="") as f:
            f.write(csv_content)
        
        print(f"変換完了: {tsv_path} → {csv_path}")
    
    except FileNotFoundError:
        print(f"ファイルが見つかりません: {tsv_path}")
    except Exception as e:
        print(f"エラー発生: {e}")

if __name__ == "__main__":
    tsv_to_csv(TSV_FILE, OUTPUT_FILE, REPLACEMENTS)




## ✅ このスクリプトの動き
# 1. `F:\_pypy\DIGA\COPY\recList.tsv` を読み込む  
# 2. `REPLACEMENTS` に従って文字列を一括置換  
# 3. タブ区切りをカンマ区切りに変換  
# 4. `recList.csv` としてUTF-8で保存  

# 💡 ポイント  
# - 置換ルールは `REPLACEMENTS` にどんどん追加できます  
# - TSVのタブ区切りをそのままカンマに変換しているので、Excelなどで開くとCSVとして認識されます  
# - 出力ファイルは **同じフォルダに `recList.csv`** が生成されます  
# これで「第2弾」仕様は完成です!  
# 👉 次のステップとしては、置換ルール(大量にあるとのこと)を別ファイルにまとめて管理する方法も便利ですが、まずはこの形で動かしてみますか?

# ==============================
 

Dimora to xlsx (1)

ぶるれこ様の

データを
なるべく

手間を かけないで!

xlsxで 読み込めるようにする

以前も 作ったけど・・・

ぜんめんりにゅ~ある である

製作:Microsoft Copilot様

OnLineBackUp で ありんす♪

# ==== copy & move 変!


import shutil
import glob
import os
from datetime import datetime

# 元のファイルがあるディレクトリ
source_dir = r"C:\Users\piyop\Downloads"

# コピー先ディレクトリ(処理用)
copy_base = r"F:\_pypy\DIGA\COPY"

# 移動先ディレクトリ(バックアップ用)
move_dest = r"F:\_pypy\DIGA\MOVE"

# ファイル名パターン
pattern = "recList-*.tsv"

# ダウンロードフォルダから対象ファイルを取得
file_list = glob.glob(os.path.join(source_dir, pattern))

if not file_list:
    print("対象ファイルが見つかりませんでした。")
else:
    # 最新ファイルを選択
    latest_file = max(file_list, key=os.path.getmtime)
    basename = os.path.basename(latest_file)
    print(f"対象ファイル: {basename}")

    # COPYフォルダに日付フォルダを作成(空フォルダのみ)
    dt_str = datetime.now().strftime("%Y%m%d_%H%M%S")
    copy_subdir = os.path.join(copy_base, dt_str)
    os.makedirs(copy_subdir, exist_ok=True)
    print(f"空フォルダ作成: {copy_subdir}")

    # コピー先ファイル(リネームして recList.tsv)
    copy_target = os.path.join(copy_base, "recList.tsv")
    os.makedirs(copy_base, exist_ok=True)

    try:
        shutil.copy(latest_file, copy_target)
        print(f"Copied: {basename} → {copy_target}")
    except Exception as e:
        print(f"Copy failed: {e}")

    # MOVE処理(元のファイル名のままバックアップ)
    os.makedirs(move_dest, exist_ok=True)
    move_target = os.path.join(move_dest, basename)

    try:
        shutil.move(latest_file, move_target)
        print(f"Moved: {basename} → {move_target}")
    except Exception as e:
        print(f"Move failed: {e}")

# ==============================

 

ぬる べきか ぬらざる方が 吉か?

ぶひぶひ
にゃんにゃん

メインPC
P7 silent



Power SW



ガードプレート


このまま???


色 塗る?



でもなぁ~~~

色塗り

子汚くなるだけ!

300% 確定だから・・・

どうしよう???


不器用 と 書いて

じじぃ~ と読む!

お化粧 した 飛行機

ぶひぶひ

どんどん


1993 or 1994

厚木OH

ねこ~~~



塗装した


へこうき

じじぃ~