Форум сайта python.su
Всем привет, у меня есть код на Python, мне его тоже помогли сделать. Сейчас там путь до файла xlsx прописан в коде. Я хотел бы сделать возможность выбора его самому. Нужно сделать диалоговое окно с выбором файла xlsx. Помогите пожалуйста добавить нужное к моему коду. Я вообще не понимаю в Python.
import pandas as pd import xml.etree.ElementTree as ET from datetime import datetime # Укажите путь к Excel-файлу excel_file = r'D:\РАБОТА\1.xlsx' # Загрузка данных из Excel df = pd.read_excel(excel_file, sheet_name='Наличие и цены') # Фильтрация данных: исключаем строки, где "Некондиция/распродажа" содержит "Распродажа" if 'Некондиция/распродажа' in df.columns: df = df[df['Некондиция/распродажа'] != 'Распродажа'] # Создание корневого элемента XML root = ET.Element('Сток', Дата=datetime.now().strftime("%d.%m.%Y %H:%M")) # Преобразование каждой строки DataFrame в XML-элемент for index, row in df.iterrows(): товар = ET.SubElement(root, 'Товар', { 'Группа': str(row['Группа оборудования']), 'Вид': str(row['Вид оборудования']), 'Производитель': str(row['Производитель']), 'НН': str(row['Номенклатурный номер']), 'Партномер': str(row['Каталожный номер']), 'Название': str(row['Наименование']), 'НазваниеРус': str(row['Наименование']), # Если нужно другое значение, укажите его 'Статус': '', # Пустое значение, так как в данных нет столбца "Статус" 'Цена': str(row['Цена']), 'Валюта': str(row['Валюта']), 'ПроцентКонв': 'call', # Заполните, если есть данные 'Вес': str(row['Вес (кг)']), 'Объем': str(row['Объём (м3)']), 'Ширина': str(row['Ширина (м)']), 'Высота': str(row['Высота (м)']), 'Глубина': str(row['Глубина (м)']), 'ЕдИзм': str(row['Единица измерения']) }) # Добавляем вложенный элемент <Склад> if pd.notna(row['Москва']): # Используем данные из столбца "Москва" склад = ET.SubElement(товар, 'Склад', Место="ЦО", Количество=str(int(row['Москва']))) ET.SubElement(склад, 'Склад', Место="ЦО(Москва)", Количество=str(int(row['Москва']))) # Создание XML-дерева и запись в файл output_xml = r'D:\РАБОТА\OCS.xml' tree = ET.ElementTree(root) tree.write(output_xml, encoding='utf-8', xml_declaration=True) print(f"Файл успешно создан: {output_xml}")
Отредактировано Serascer (Март 8, 2025 18:41:54)
Офлайн
SerascerВ качестве помощи, могу сказать что существует модуль filedialog. Для выбора существующего файла можно использовать функцию askopenfilename(). Примерно вот так:
Помогите пожалуйста добавить нужное к моему коду. Я вообще не понимаю в Python.
from tkinter import filedialog excel_file = filedialog.askopenfilename(title="Выберите имя файла Excel", filetypes=[("Файлы Excel", '*.xlsx'), ("Файлы Excel", '*.xls'), ("Все файлы", "*.*")])
Офлайн
SerascerМожешь вывести имя входного файла для обработки и имя выходного файла для сохранения в аргументы командной строки. При запуске скрипта будешь подавать любые имена/пути файлов. Это через модуль sys делается, в нём есть список argv, в котором можно смотреть все аргументы командной строки, с которыми был вызван скрипт.
Сейчас там путь до файла xlsx прописан в коде. Я хотел бы сделать возможность выбора его самому. Нужно сделать диалоговое окно с выбором файла xlsx.
Отредактировано py.user.next (Март 9, 2025 05:17:39)
Офлайн