gpt4 book ai didi

python - 从 ipywidgets FileUpload 访问来自多个上传文件的内容

转载 作者:行者123 更新时间:2023-12-04 10:18:52 29 4
gpt4 key购买 nike

我刚刚学习 ipywidgets 并在 Jupyter notebook Python 3 中使用它们。基本上,我试图允许用户使用 FileUpload() 上传多个文件,然后尝试访问这些文件的内容,以便我可以保存每个文件进入系统。我让它只为一个文件工作,但现在我试图让它成为一个迭代的东西,这样它就可以保存所有文件。

这是我制作 FileUpload 的代码

from ipywidgets import FileUpload

upload = FileUpload(multiple=True)

upload

然后我单击上传小部件并上传两个 .txt 文件

我打印出了什么 upload.value好像:
{'test.txt': {'content': b'hi',
'metadata': {'lastModified': 152266374855,
'name': 'test.txt',
'size': 17,
'type': 'text/plain'}},
'test2.txt': {'content': b'bye',
'metadata': {'lastModified': 152266374855,
'name': 'test2.txt',
'size': 18,
'type': 'text/plain'}}}

我写的第一个代码只保存一个上传的文件,并直接保存到 Jupyter 文件系统中
with open("test.txt", "wb") as fp:
fp.write(upload.data[0])

然后我尝试迭代对两个文件做同样的事情(我已经尝试了很多东西,请原谅我,因为我不擅长字典)
for files in upload.value:
with open(file, "wb") as fp:
fp.write(file['content'])

然后我意识到那只会访问字典中的第一个键,即文件名。

我还尝试了以下变体:
for elem in upload.value:
with open (elem['metadata']['name'], 'wb') as file:
file.write(elem['content'])

我试图做 for k,v并添加 .items()上传后,但我也有错误。我想我只是不知道如何在 for 循环中访问每个文件的值……如果您有任何建议,请告诉我,谢谢!

最佳答案

upload.value返回一个字典,因此您需要使用 .items() 迭代键值对。下面这两个具有相同的效果,2 更简洁一些。

1)在循环中解包

for elem in upload.value.items():
name, file_info = elem
with open (name, 'wb') as file:
file.write(file_info['content'])

2)或者直接解压

for name, file_info in upload.value.items():
with open (name, 'wb') as file:
file.write(file_info['content'])

关于python - 从 ipywidgets FileUpload 访问来自多个上传文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60958518/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com