python-3.x 将StreamLit中的文件保存到临时目录

wvt8vs2t  于 2023-02-26  发布在  Python
关注(0)|答案(1)|浏览(395)

我正在尝试将从streamlit上传的文件保存到一个目录中,这样我就可以在代码的其他部分使用它们。

temp_dir = tempfile.TemporaryDirectory()
st.write(temp_dir.name)

uploadedfiles = st.file_uploader("Upload a file")

if uploadedfiles is not None:
  uploadedfiles.save(temp_dir)

我一直收到这个错误:

File "/home/appuser/venv/lib/python3.9/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 565, in _run_script
    exec(code, module.__dict__)
File "/app/indextest/streamlit_app.py", line 17, in <module>
    uploadedfiles.save(temp_dir)
AttributeError: 'UploadedFile' object has no attribute 'save'

有人知道为什么吗?将不胜感激。我明白,这是说,上传的文件没有属性中使用。保存,但我需要一种方法来解决这个问题。

fzwojiic

fzwojiic1#

您是否希望执行以下操作:

import tempfile
import pathlib
import streamlit as st

temp_dir = tempfile.TemporaryDirectory()
st.write(temp_dir.name)

uploaded_file = st.file_uploader("Upload a file")
uploaded_file_name = "File_provided"
uploaded_file_path = pathlib.Path(temp_dir.name) / uploaded_file_name

if uploaded_file is not None:
  with open(uploaded_file_path, 'wb') as output_temporary_file:
    output_temporary_file.write(uploaded_file.read())

但是我不明白为什么你要做这样的事情,因为一旦脚本完成,文件和目录就会被销毁。

相关问题