使用Streamlit开发UI时遇AttributeError: 'NoneType'无name属性问题求助
解决Streamlit中
AttributeError: 'NoneType' object has no attribute 'name'的问题 问题原因
当用户还未上传文件时,st.file_uploader()会返回None,此时直接调用data_file.name就会触发该错误。
解决方法
增加对data_file是否存在的判断,只有当用户成功上传文件后,才执行文件写入操作,修改后的代码如下:
import os import streamlit as st data_file = st.file_uploader("Upload raw file", type=["docx"]) # 仅当文件上传成功后执行写入逻辑 if data_file is not None: save_path = os.path.join("/home/lungsang/Desktop/levelpack-UI/content/A0/1 docx-raw", data_file.name) with open(save_path, "wb") as f: f.write(data_file.getbuffer()) st.success("文件上传保存成功!")
额外优化说明
- 新增
st.success提示可以让用户明确知道文件已成功保存,提升UI交互体验; - 拆分
os.path.join为单独变量,代码可读性更强。
内容的提问来源于stack exchange,提问作者lungsang
相关产品推荐
相关产品推荐

