我创建了一个工作代码来使用 FileInput 上传多个文件,并将其绑定到一个选择器以在上传后在仪表板中显示它们:
file_input = pn.widgets.FileInput(accept='.csv', sizing_mode='stretch_width',
multiple=True)
def get_files(files = None):
if file_input.filename == None:
selector = pn.widgets.MultiSelect(
name='Select files', sizing_mode='stretch_width',
options=['Add your files here'])
return selector
else:
breakpoint()
selector = pn.widgets.MultiSelect(
name='Select files', sizing_mode='stretch_width',
options=file_input.filename)
return selector
upload_files = pn.bind(get_files,file_input, watch= True)
我可以在那里看到文件名: (Pdb) file_input.文件名 ['test_5.csv'、'test_4.csv'、'test_3.csv'、'test_2.csv'、'test.csv']
但是保存方法仅适用于我只上传一个文件的情况:
(Pdb) 输出 = io.BytesIO() (Pdb)file_input.save(输出) *** 类型错误:FileInput 包含单个文件,但给出了文件名列表。请提供单个文件名或类似文件的对象。
我在阅读 FileInput 文档时找不到任何有用的内容。
有人给了我一个使用 FileInput 保存多个文件的工作方法。
我自己找到了解决方案,您需要提供文件列表,file_input.filename 工作正常。 我认为 io.BytesIO() 对象的列表也可以。