Как получить доступ к компонентам Gradio, созданные динамически в глобальной функцииPython

Программы на Python
Anonymous
Как получить доступ к компонентам Gradio, созданные динамически в глобальной функции

Сообщение Anonymous »

Моя цель: < /p>

Отбросьте список файлов. < /li>
Читать файлы и извлечь столбцы. < /li >
Динамически генерировать раскрывающиеся компоненты, чтобы пользователь мог выбрать исходные и целевые столбцы. < /li>
Мне нужно вернуть (глобально) все выборы, чтобы я мог их использовать с функцией process_files ().
Я думаю (3) его следует решить с помощью Gr.state ([]), но я не уверен, как его обновить.
Вот мой код: < /li>
< /ol>
Функция для обработки файлов < /h2>
import gradio as gr
import pandas as pd

def process_files(files, selections):
results = []

for file, selection in zip(files, selections):
file_name = file.name
source_col, target_col, source_lang, target_lang = selection
try:
if file_name.endswith(".csv"):
df = pd.read_csv(file.name)
elif file_name.endswith(".xlsx"):
df = pd.read_excel(file.name, engine="openpyxl")
else:
continue # Skip unsupported files

# Extract selected columns
extracted_data = df[[source_col, target_col]]

results.append(
f"✅ Processed {file_name} ({source_lang} → {target_lang})")
except Exception as e:
results.append(f"Error processing {file_name}: {str(e)}")

return "\n".join(results)
< /code>
gradio interface < /h2>
with gr.Blocks() as demo:
gr.Markdown("## Upload Multiple Files and Select Columns")

file_input = gr.File(file_types=[
".csv", ".xlsx"], label="Drop your files here", interactive=True, file_count="multiple")

all_selections = gr.State([])

@gr.render(inputs=[file_input], triggers=[file_input.change])
def generate_column_selectors(files):
if not files:
return "## No Files Uploaded", [] # Reset selections

with gr.Column():
for file in files:
try:
if file.name.endswith(".csv"):
df = pd.read_csv(file.name)
elif file.name.endswith(".xlsx"):
df = pd.read_excel(file.name, engine="openpyxl")
else:
continue

with gr.Row():
gr.Markdown(f"**{file.name}**") # Display filename
source_col = gr.Dropdown(
df.columns.tolist(), label="Source Column", interactive=True)
target_col = gr.Dropdown(
df.columns.tolist(), label="Target Column", interactive=True)
source_lang = gr.Textbox(
label="Source Language", placeholder="e.g., English", interactive=True)
target_lang = gr.Textbox(
label="Target Language", placeholder="e.g., French", interactive=True)

all_selections.append(
(source_col, target_col, source_lang, target_lang)) # this does not work.

except Exception as e:
gr.Markdown(f"Error processing {file.name}: {str(e)}")
submit_button = gr.Button("Submit & Process", interactive=True)
output_text = gr.Markdown()

submit_button.click(process_files, inputs=[
file_input, all_selections], outputs=[output_text])

demo.launch()


Подробнее здесь: https://stackoverflow.com/questions/794 ... l-function

Вернуться в «Python»