Я только сейчас изучаю ipywidgets и работаю с ними в блокноте Jupyter 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'])
потом я понял, что это будет доступ только к первому ключу в словаре, который был файлом name.
я также попробовал варианты:
for elem in upload.value:
with open (elem['metadata']['name'], 'wb') as file:
file.write(elem['content'])
Я попытался сделать for k,v
и добавить .items()
после загрузки, но там тоже были ошибки. Я думаю, я просто не могу понять, как получить доступ к значениям каждого файла в a для l oop ... Пожалуйста, дайте мне знать, если у вас есть какие-либо советы, спасибо!