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

news/2024/11/24 11:55:54/

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

👉有问题欢迎大家加关注私戳或者评论(包括但不限于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 ZipFileimport gradio as grdef 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 filesdemo = 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.ppmy.cn/news/696134.html

相关文章

什么是dism host servicing process

什么是 Dism Host Servicing Process?Dism Host Servicing Process 是一个 Windows 操作系统中的系统维护服务,它可以帮助检查和修复操作系统中的损坏文件,以及更新和升级系统中的组件。

为电脑添加host

搜索win10 host文件地址,如下:文件路径:C:\WINDOWS\system32\drivers\etc\hosts 以管理员身份运行记事本,再用记事本打开hosts文件才能保存。 复制路径 C:\WINDOWS\system32\drivers\etc\, 在对应文件夹下打开&#xf…

GuestOS和HostOS是什么?

GuestOS:VM(虚拟机)里的的系统(OS); HostOS:物理机里的系统(OS);

Host作用

Host作用 host是一个没有扩展名的系统文件,windows 环境下,该系统文件位于 C:\Windows\System32\drivers\etc目录下当用户在浏览器中输入网址时,正常流程是系统会将域名发送给指定的DNS服务器进行IP地址的解析,拿到IP地址之后再进…

计算机中cmos设置程序,电脑主板上有CMOS设置是什么意思

CMOSComplementaryMetalOxideSemiconductor指互补金属氧化物(PMOS管和NMOS管)共同构成的互补型MOS集成电路制造工艺,它的特点是低功耗。由于CMOS中一对MOS组成的门电路在瞬间看,要么PMOS导通,要么NMOS导通,要么都截至,…

Linux usb Host 详解

1.简介 整个 USB 系统的通讯模型如上图所示,本文详细解析其中 Host 各模块的架构和原理 (图中彩色部分)。 2. Usb Core 驱动设备模型 由前几节可知USB将Device进一步细分成了3个层级:Configuration 配置、Interface 接口、Endpoint 端点。 Usb Core 为…

为什么要使用host

大家都知道 在开发的过程当中,很多人前辈会让我们在host文件里面配置一个域名,什么a.com 127.0.0.1,这样我们就能通过访问a.com来调用我们自己window环境下的php代码了。那么为什么要配置呢? 简单来说,我们在浏览器上…

host映射主机名和端口

1、找到hosts文件【文件地址为:计算机—C盘—Windows—System32—drivers—etc】 C:\Windows\System32\drivers\etc 2、打开hosts文件(右键打开,使用记事本打开): 3、修改hosts文件内容 4、保存hosts文件 注意&#x…