You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python(Streamlit环境)同目录CSV无法通过相对路径读取的问题

Streamlit中相对路径读取CSV文件失败的解决思路

核心原因

Streamlit运行时的**当前工作目录(CWD)**不一定是你的Python脚本所在目录,这是相对路径失效的关键。


具体解决方法

1. 动态构建脚本所在目录的绝对路径

通过Python内置模块获取脚本的真实路径,再拼接CSV文件名,彻底规避工作目录差异问题:

import os
import pandas as pd

# 获取当前脚本所在文件夹的绝对路径
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接CSV文件的完整路径
csv_full_path = os.path.join(script_dir, 'heart_disease_data.csv')
# 读取文件
heart_data = pd.read_csv(csv_full_path)

2. 启动Streamlit时切换到脚本目录

在命令行中先切换到Python脚本所在目录,再启动Streamlit:

cd C:\Python
streamlit run your_script_name.py

这样Streamlit的工作目录会和脚本目录一致,相对路径就能正常识别。

3. 校验文件实际状态

  • 确认CSV文件确实和Python脚本在同一目录,注意文件名大小写(Windows不敏感,但部署到Linux环境时会引发问题)
  • 检查系统是否隐藏了文件扩展名,比如实际文件是heart_disease_data.csv.txt,但显示为heart_disease_data.csv

4. 使用Streamlit文件上传功能(备选)

如果场景允许,让用户手动上传CSV文件,完全绕开路径问题:

import streamlit as st
import pandas as pd

uploaded_file = st.file_uploader("选择CSV文件", type="csv")
if uploaded_file is not None:
    heart_data = pd.read_csv(uploaded_file)
    # 后续业务逻辑

内容的提问来源于stack exchange,提问作者Mohamad Abedrabo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:03:18