見出し画像

Python、「フォルダ内のepsファイル名を取得する」試してみた。

ファイル名を取得します。

import tkinter as tk
from tkinter import filedialog
import os

# tkinterウィンドウを作成
root = tk.Tk()
root.withdraw()  # メインウィンドウを非表示にする

# フォルダ選択ダイアログを表示してフォルダを選択
folder_selected = filedialog.askdirectory(title="フォルダを選択してください")

# 選択されたフォルダ内のファイルを取得
if folder_selected:
    eps_files = [f for f in os.listdir(folder_selected) if f.endswith('.eps')]
    if eps_files:
        print("EPSファイルが見つかりました:")
        for eps_file in eps_files:
            print(os.path.join(folder_selected, eps_file))
    else:
        print("選択されたフォルダ内にEPSファイルはありません。")
else:
    print("フォルダが選択されませんでした。")




Excelリストとの整合性をチェックします。

import tkinter as tk
from tkinter import filedialog
import os
import pandas as pd

def check_eps_data_in_excel(folder_path, excel_path):
    eps_data_names = []
    eps_files = [f for f in os.listdir(folder_path) if f.endswith('.eps')]
    eps_data_names = [os.path.splitext(f)[0] for f in eps_files]

    if not eps_data_names:
        print("指定されたフォルダ内にEPSデータが見つかりませんでした。")
        return

    if os.path.exists(excel_path):
        xls = pd.ExcelFile(excel_path)
        for sheet_name in xls.sheet_names:
            df = pd.read_excel(excel_path, sheet_name=sheet_name)
            if 'イラストID' in df.columns:
                excel_eps_data = df['イラストID'].tolist()
                result = all(eps_data_name in excel_eps_data for eps_data_name in eps_data_names)
                if result:
                    return True
        
        return False
    else:
        print("指定されたExcelファイルが見つかりませんでした。")
        return

root = tk.Tk()
root.withdraw()

folder_selected = filedialog.askdirectory(title="フォルダを選択してください")
if folder_selected:
    excel_selected = filedialog.askopenfilename(title="Excelファイルを選択してください", filetypes=[("Excel files", "*.xlsx;*.xls")])
    if excel_selected:
        result = check_eps_data_in_excel(folder_selected, excel_selected)
        if result is not None:
            if result:
                print("EPSデータがExcelファイルに含まれています: True")
            else:
                print("EPSデータがExcelファイルに含まれていません: False")
        else:
            print("EPSデータがExcelファイルに含まれていません。")



import os
import tkinter as tk
from tkinter import filedialog, messagebox
import pandas as pd

def get_dev_code_and_destination(folder_path):
    # フォルダ名を分割して、開発コードと仕向けを取得する
    folder_name = os.path.basename(folder_path)
    parts = folder_name.split('_')
    if len(parts) < 2:
        return None, None  # フォルダ名が正しい形式ではない場合はNoneを返す
    dev_code = parts[0]
    destination = parts[1]
    return dev_code, destination

def check_eps_data_in_excel(folder_path, excel_path):
    dev_code, destination = get_dev_code_and_destination(folder_path)
    if dev_code is None or destination is None:
        messagebox.showinfo("情報", "フォルダ名が正しい形式ではありません。")
        return

    eps_data_names = [os.path.splitext(f)[0] for f in os.listdir(folder_path) if f.endswith('.eps')]
    if not eps_data_names:
        messagebox.showinfo("情報", "指定されたフォルダ内にEPSデータが見つかりませんでした。")
        return

    if os.path.exists(excel_path):
        xls = pd.ExcelFile(excel_path)
        for sheet_name in xls.sheet_names:
            df = pd.read_excel(excel_path, sheet_name=sheet_name)
            if '開発コード' in df.columns and '仕向け' in df.columns:
                excel_eps_data = df[['開発コード', '仕向け']].apply(lambda x: '_'.join(x.dropna().astype(str)), axis=1).tolist()
                user_eps_data = [f"{dev_code}_{destination}" for _ in range(len(eps_data_names))]
                result = all(eps_data_name in excel_eps_data for eps_data_name in user_eps_data)
                if result:
                    messagebox.showinfo("情報", "EPSデータのフォルダ名がExcelファイルと一致しました。")
                    return
        
        messagebox.showinfo("情報", "EPSデータのフォルダ名がExcelファイルと一致しませんでした。")
    else:
        messagebox.showinfo("情報", "指定されたExcelファイルが見つかりませんでした。")

root = tk.Tk()
root.withdraw()

folder_selected = filedialog.askdirectory(title="フォルダを選択してください")
if folder_selected:
    excel_selected = filedialog.askopenfilename(title="Excelファイルを選択してください", filetypes=[("Excel files", "*.xlsx;*.xls")])
    if excel_selected:
        check_eps_data_in_excel(folder_selected, excel_selected)


フォルダ名を取得し、フォルダ内にあるepsデータのファイル名を取得、Excelの指定した3列が完全一致するか確認し判定する。


この記事が気に入ったらサポートをしてみませんか?