使用gradio库的File模块实现文件上传和展示

news2024/11/17 1:37:35

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp/378/

请添加图片描述

(封面图由文心一格生成)

使用gradio库的File模块实现文件上传和展示

gradio是一个功能强大的Python库,用于构建交互式的机器学习和深度学习应用程序。其中的File模块提供了文件上传和展示的功能。本文将介绍gradio库的File模块以及其常用的四个方法:change、clear、upload和select。

File模块简介

File模块是gradio库中的一个组件,用于创建一个文件组件,允许用户上传通用文件(用作输入)或显示通用文件(用作输出)。

作为输入时,File模块将上传的文件作为tempfile._TemporaryFileWrapper或List[tempfile._TemporaryFileWrapper]传递给函数,具体取决于file_count参数的设置(或者是bytes/List[bytes],取决于type参数的设置)。

作为输出时,File模块期望函数返回一个文件的路径(str类型),或者返回一个包含文件路径的列表(List[str])。

示例代码

下面是一个使用File模块的示例代码,将上传的zip文件转换为JSON格式并进行展示。

from zipfile import ZipFile

import gradio as gr


def zip_to_json(file_obj):
    files = []
    with ZipFile(file_obj.name) as zfile:
        for zinfo in zfile.infolist():
            files.append(
                {
                    "name": zinfo.filename,
                    "file_size": zinfo.file_size,
                    "compressed_size": zinfo.compress_size,
                }
            )
    return files


demo = gr.Interface(zip_to_json, "file", "json")

if __name__ == "__main__":
    demo.launch()

该示例代码创建了一个接口,用户可以上传zip文件,然后将文件解析为JSON格式并显示在界面上。

常用方法介绍

1. change方法:

  • 作用:当组件的值发生变化时触发,可以是用户输入导致的变化,也可以是函数更新导致的变化。
  • 参数:
    • fn: 包装在接口中的函数,通常是一个机器学习模型的预测函数。每个参数对应一个输入组件,函数应返回一个值或一个值的元组,元组中的每个元素对应一个输出组件。
    • inputs: 用作输入的组件列表。
    • outputs: 用作输出的组件列表。
    • 其他参数:用于配置接口的各种参数,如api_name、status_tracker等。

2. clear方法:

  • 作用:当用户清除组件(如图像或音频)时触发。
  • 参数同change方法。

3. upload方法:

  • 作用:当用户上传文件到组件时触发。
  • 参数同change方法。

4. select方法:

  • 作用:当用户从文件列表中选择文件时触发。
  • 参数同change方法。

通过这四个方法,我们可以实现对上传的文件进行处理,并将结果展示给用户。

参数详解

File模块参数:

参数数据类型默认值描述
valuestr | list[str] | Callable | NoneNone默认文件路径。如果是可调用对象,则在应用程序加载时调用该函数以设置组件的初始值。
file_countstr“single”如果是"single",允许用户上传一个文件。如果是"multiple",允许用户上传多个文件。如果是"directory",允许用户上传所选目录中的所有文件。返回类型将根据"multiple"或"directory"的情况为每个文件返回一个列表。
file_typeslist[str] | NoneNone要上传的文件扩展名或文件类型的列表(例如[‘image’,‘.json’,‘.mp4’])。"file"允许上传任何文件,"image"仅允许上传图像文件,"audio"仅允许上传音频文件,"video"仅允许上传视频文件,"text"仅允许上传文本文件。
typestr“file”组件返回的值类型。"file"返回一个与上传文件具有相同基本名称的临时文件对象,可以通过file_obj.name检索其完整路径,"binary"返回一个字节对象。
labelstr | NoneNone组件在界面中的名称。
everyfloat | NoneNone如果value是可调用对象,则在客户端连接打开时每隔指定的秒数运行函数一次。否则没有影响。队列必须启用。可以通过此组件的.load_event属性访问事件(例如取消它)。
show_labelboolTrue如果为True,将显示标签。
containerboolTrue如果为True,将组件放置在容器中,为边框提供一些额外的填充。
scaleint | NoneNone相对于相邻组件在一行中的宽度。例如,如果组件A的scale=2,组件B的scale=1,那么A的宽度将是B的两倍。应为整数。
min_widthint160最小像素宽度,如果屏幕空间不足以满足此值,将换行。如果某个比例值导致该组件比min_width更窄,则首先将尊重min_width参数。
interactivebool | NoneNone如果为True,将允许用户上传文件;如果为False,只能用于显示文件。如果未提供,则根据组件用作输入或输出来推断。
visibleboolTrue如果为False,将隐藏组件。
elem_idstr | NoneNone可选字符串,用作此组件在HTML DOM中的id。可用于定位CSS样式。
elem_classeslist[str] | str | NoneNone可选的字符串列表,用作此组件在HTML DOM中的类。可用于定位CSS样式。

change 方法参数:

参数数据类型默认值描述
fnCallable | None-要封装为界面的函数。通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,并且函数应该返回一个值或值的元组,其中元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的组件列表。如果函数不接受输入,则应将其设置为空列表。
outputsComponent | list[Component] | NoneNone要用作输出的组件列表。如果函数不返回输出,则应将其设置为空列表。
api_namestr | NoneNone定义此参数将在API文档中公开端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为True,将在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,在等待期间将显示进度动画。
queuebool | NoneNone如果为True,将请求放入队列中(如果队列已启用)。如果为False,即使队列已启用,也不会将此事件放入队列中。如果为None,将使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,即应接受每个参数的输入值列表。列表应具有相同的长度(并且最多为max_batch_size的长度)。然后需要返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法(仅当batch=True时才相关),则最大批处理在一起的输入数量。
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件调用此方法,则将其保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone要在此侦听器触发时取消的其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位解释。队列必须启用。

clear 方法参数:

参数数据类型默认值描述
fnCallable | None-要封装为界面的函数。通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,并且函数应该返回一个值或值的元组,其中元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的组件列表。如果函数不接受输入,则应将其设置为空列表。
outputsComponent | list[Component] | NoneNone要用作输出的组件列表。如果函数不返回输出,则应将其设置为空列表。
api_namestr | NoneNone定义此参数将在API文档中公开端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为True,将在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,在等待期间将显示进度动画。
queuebool | NoneNone如果为True,将请求放入队列中(如果队列已启用)。如果为False,即使队列已启用,也不会将此事件放入队列中。如果为None,将使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,即应接受每个参数的输入值列表。列表应具有相同的长度(并且最多为max_batch_size的长度)。然后需要返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法(仅当batch=True时才相关),则最大批处理在一起的输入数量。
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件调用此方法,则将其保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone要在此侦听器触发时取消的其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位解释。队列必须启用。

upload 方法参数:

参数数据类型默认值描述
fnCallable | None-要封装为界面的函数。通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,并且函数应该返回一个值或值的元组,其中元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的组件列表。如果函数不接受输入,则应将其设置为空列表。
outputsComponent | list[Component] | NoneNone要用作输出的组件列表。如果函数不返回输出,则应将其设置为空列表。
api_namestr | NoneNone定义此参数将在API文档中公开端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为True,将在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,在等待期间将显示进度动画。
queuebool | NoneNone如果为True,将请求放入队列中(如果队列已启用)。如果为False,即使队列已启用,也不会将此事件放入队列中。如果为None,将使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,即应接受每个参数的输入值列表。列表应具有相同的长度(并且最多为max_batch_size的长度)。然后需要返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法(仅当batch=True时才相关),则最大批处理在一起的输入数量。
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件调用此方法,则将其保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone要在此侦听器触发时取消的其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位解释。队列必须启用。

select 方法参数:

参数数据类型默认值描述
fnCallable | None-要封装为界面的函数。通常是机器学习模型的预测函数。函数的每个参数对应一个输入组件,并且函数应该返回一个值或值的元组,其中元组中的每个元素对应一个输出组件。
inputsComponent | list[Component] | set[Component] | NoneNone要用作输入的组件列表。如果函数不接受输入,则应将其设置为空列表。
outputsComponent | list[Component] | NoneNone要用作输出的组件列表。如果函数不返回输出,则应将其设置为空列表。
api_namestr | NoneNone定义此参数将在API文档中公开端点。
status_trackerNoneNone-
scroll_to_outputboolFalse如果为True,将在完成时滚动到输出组件。
show_progressLiteral[‘full’] | Literal[‘minimal’] | Literal[‘hidden’]“full”如果为True,在等待期间将显示进度动画。
queuebool | NoneNone如果为True,将请求放入队列中(如果队列已启用)。如果为False,即使队列已启用,也不会将此事件放入队列中。如果为None,将使用gradio应用程序的队列设置。
batchboolFalse如果为True,则函数应处理一批输入,即应接受每个参数的输入值列表。列表应具有相同的长度(并且最多为max_batch_size的长度)。然后需要返回一个元组列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
max_batch_sizeint4如果从队列调用此方法(仅当batch=True时才相关),则最大批处理在一起的输入数量。
preprocessboolTrue如果为False,将不会在运行’fn’之前运行组件数据的预处理(例如,如果使用Image组件调用此方法,则将其保留为base64字符串)。
postprocessboolTrue如果为False,将不会在将’fn’的输出返回给浏览器之前运行组件数据的后处理。
cancelsdict[str, Any] | list[dict[str, Any]] | NoneNone要在此侦听器触发时取消的其他事件的列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但当前正在运行的函数将被允许完成。
everyfloat | NoneNone在客户端连接打开时每隔指定的秒数运行此事件。以秒为单位解释。队列必须启用。

总结:

本文介绍了gradio库的File模块及其常用的四个方法:change、clear、upload和select。通过使用这些方法,我们可以实现文件的上传和展示功能,为用户提供更加丰富的交互体验。


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/711798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB迭代

目录 黄金分割比 习题 符号运算 固定点 WHY hello world Goldrect 黄金分割比 format for循环 %% For loopx 42for k 1:12x sqrt(1x);disp(x)end while循环 %% While loopx 42;k 1;while abs(x-sqrt(1x)) > 5e-5x sqrt(1x);k k1;endk 绘图语句 %% Plotx -pi:…

现在的前端,到底是技术深度重要,还是技术广度重要?

前言 大家好,,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心。 前几天跟朋友讨论“技术广度和技术深度哪个重要”,再想想自己像过山车一般的前端历程,有感而发,想给小兄弟们一…

简单的学习下 JavaScript 录屏API

学习如何使用这个简单易用的API进行屏幕共享、屏幕录制等操作。尽管需要对JavaScript有一定的了解&#xff0c;但我相信你已经具备了这方面的知识。 1、开始录制 让我们创建一个按钮&#xff1a; <button id"recording-toggle">Start recording</button>…

BUUCTF变异凯撒

根据题目可以得知&#xff0c;这道题使用的是凯撒密码 凯撒密码&#xff0c;是一种位移加密方式&#xff0c;只对26个字母进行位移替换加密&#xff0c;规则简单&#xff0c;容易破解。 但是根据题目下发的文件看来&#xff0c;出现了关于除字母以外的字符&#xff0c;结合题目…

综合评价算法 | Matlab实现基于变异系数法的综合评价算法

文章目录 效果一览文章概述研究内容源码设计参考资料效果一览 文章概述 综合评价算法 | Matlab实现基于变异系数法的综合评价算法 研究内容 变异系数法是根据统计学方法计算得出系统各指标变化程度的方法,是一种客观赋权法。根据该方法变化差异较大的指标权重较大,变化差异较…

【C++ 实现】图论概念,最小生成树,单/多源最短路径实现

文章目录 数据结构表示图最小生成树KruskalPrim 最短路径DijkstraBellman-Ford算法多源最短路径&#xff1a;FloydWarshall 总结 数据结构表示图 首先节点的存取&#xff0c;V是节点key&#xff0c;vector<pair<V,V>> map;其实已经能表达一个图了&#xff0c;但是…

MWCS 2023,到底有些啥?(上篇)

大家好&#xff0c;MWCS 2023&#xff08;世界移动通信大会上海展&#xff09;已经结束了。按照老规矩&#xff0c;我来给大家汇报一下现场情况。 █ 展会总结 今年是MWC在中国的第十届&#xff0c;也是疫情管控解除后的第一届。从总体情况来看&#xff0c;人气非常火爆。展区人…

ElasticSearch - 根据经纬度,简单搜索指定距离范围内的数据

ES的地图检索方式 ES支持的地图检索方式有以下几种&#xff1b; geo_distance geo_bounding_box geo_polygon 1、geo_distance&#xff1a;直线距离检索&#xff0c;如给定点A&#xff0c;要求返回地图上距离点A三千米的商家&#xff08;点外卖场景&#xff09; 2、查找索引…

下半年就该这么干!

阅读本文大概需要 0.99 分钟。 周末一般不更新&#xff0c;不过今天有点特殊。 是这样的&#xff0c;前几天不是通知说我们 7 月 8 日会在杭州举办线下大会么&#xff1f;完了之后发现后台很多私信问怎么参加的&#xff0c;这才想起我这个公众号还没发让大家进预约群的入口。。…

前端使用mysql记录。以本机作为服务器,安装mySql。Dbeaver的基本使用

安装 Mac 上如何安装Mysql&#xff1f; Mac 上如何安装Mysql&#xff1f; Mysql 配置 在mac终端打开文件&#xff1a;vi ~/.bash_profile 加入语句&#xff1a;PATH$PATH:/usr/local/mysql/bin 使配置的语句生效&#xff1a;source ~/.bash_profile 使用命令行 sudo vi /et…

【读书笔记】《月亮与六便士》- [英] 威廉·萨默塞特·毛姆 - 1919年出版

不停的阅读&#xff0c;然后形成自己的知识体系。 2023.07.03 读 一直听说毛姆的大名&#xff0c;却一直没有拜读。记得《小王子》中有读者提到这本书&#xff0c;看了眼作者竟然发现是毛姆。那么毫不犹豫的&#xff0c;赶紧拜读一番。 文章目录 作家榜推荐词第一章第二章第三…

Spring核心原理解析

1.Bean的生命周期底层原理 AppConfig package com.zhouyu;import com.zhouyu.service.OrderService; import org.springframework.context.annotation.*;ComponentScan("com.zhouyu") public class AppConfig {Beanpublic OrderService orderService1(){return new…

微机实验一:认识实验系统和联机通讯实验

实验目的 讲清楚进行本实验后要学到的知识、掌握的数据结构及共定义和农示方法&#xff0c;讲清楚所采用的算法 wrTPL-486微机原理及接口技术数学实验手统的操u)孰秀TPC-480联机集闯开发调试故件的操作环境3)3俩文丝计体机的基阻成和4、存储器并有接新i的置(了解岗单汇海语谢设…

Nginx【location指令、虚拟主机的分类、Nginx支持三种类型的虚拟主机配置 】(三)-全面详解(学习总结---从入门到深化)

目录 Nginx配置指令详解_location指令 虚拟主机的分类 Nginx支持三种类型的虚拟主机配置 Nginx配置指令详解_location指令 配置location块 语法&#xff1a; URL // http://ip:port/ location [ | ~ | ~* | ^~] uri {... } 示例1 没有修饰符 表示&#xff1a;必须以指…

UE5 MetaHuman SDK插件的使用【二、聊天机器人】

目录 制作&#xff1a; 流程制作【相对复杂但逻辑清楚】&#xff1a; 快速制作【有个函数把上面的流程全部合在了一起&#xff0c;只需要用一个函数即可】 3个结构体的参数 combo后面的逻辑&#xff1a; 效果&#xff1a; ​编辑 代码 在前面的文章中&#xff0c;我们创…

geoserver发布arcgis server离线瓦片

1.使用tif文件也可以发布服务&#xff0c;但是我下载的tif文件发布的服务总数模糊不清&#xff0c;原因可能是地图比例尺问题。 2.仔细研究&#xff0c;发现下载的arcgis server瓦片都是高清的&#xff0c;于是想到直接加载arcgis瓦片&#xff0c;这样图片/坐标系之间问题都完…

Python3 实例(四) | 菜鸟教程(二十二)

目录 一、Python 堆排序 二、Python 计数排序 三、Python 希尔排序 四、Python 拓扑排序 五、Python 简单的银行系统 一、Python 堆排序 &#xff08;一&#xff09;堆排序&#xff08;Heapsort&#xff09;是指利用堆这种数据结构所设计的一种排序算法。 &#xff08;二…

【JUC-6】AQS介绍,基于AQS实现自己的锁

什么是AQS AbstractQueuedSynchronizer(抽象队列同步器&#xff0c;简称AQS)出现在JDK 1.5中。AQS是很多同步器的基础框架&#xff0c;比如ReentrantLock、CountDownLatch和Semaphore等都是基于AQS实现的。除此之外&#xff0c;我们还可以基于AQS&#xff0c;定制出我们所需要…

关于LiveData全面详解(附事件总线)

前言&#xff1a;缤纷色彩闪出的美丽 是因它没有 分开每种色彩 前言 MVVM 架构模式中&#xff0c;ViewModel 是不会持有宿主的信息&#xff0c;业务逻辑在 ViewModels 层中完成&#xff0c;而不是在 Activities 或 Fragments 中。LiveData 在里面担任数据驱动的作用&#xff1…

ElementPlus的Collapse 折叠面板问题

我也不明白为什么会报这个错误&#xff0c;把关于ts的代码改成js的就可以了。。 ERROR in ./src/views/Home.vue?vue&typescript&langts&setuptrue (./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/views/Home.vue?vue&typescript&…