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列が完全一致するか確認し判定する。
この記事が気に入ったらサポートをしてみませんか?