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

Windows下Streamlit报OSError: [Errno 22] 替换斜杠无效问题

问题根因

这个报错和路径斜杠写法没有关系,是Streamlit的运行逻辑导致的:

  • 页面首次加载、用户还没在输入框输入内容时,st.text_input的返回值默认为空字符串
  • 此时拼接得到的路径为M:/Desktop/AutomationProject/,这是一个文件夹路径,pandas尝试将其作为CSV文件读取时,自然会抛出无效参数错误
  • 当你输入正确文件名后,路径拼接正确所以功能可以正常运行,但脚本每次重跑的初始空值状态都会触发一次报错,所以错误提示会持续出现
修复方法
  1. 增加输入非空判断:只有当用户确实输入了文件名之后,再执行读取CSV的逻辑
  2. 路径拼接改用os.path.join实现,自动适配系统路径分隔符,避免手动拼接字符串带来的路径格式问题
  3. 可选增加文件存在性校验,避免用户输错文件名触发额外报错

修复后的参考代码:

import os
import pandas as pd
import streamlit as st

# 定义基础目录
BASE_DIR = "M:/Desktop/AutomationProject/"

st.header('1 - Express Autocalls')
autocall_gbp_file = st.text_input("Please type in your Autocall File Name (GBP)")

# 输入非空时才执行后续逻辑
if autocall_gbp_file:
    file_path = os.path.join(BASE_DIR, autocall_gbp_file)
    # 校验文件是否存在
    if os.path.isfile(file_path):
        express_gbp = pd.read_csv(file_path)
        # 后续数据清洗、DataFrame输出逻辑在此处编写
        st.dataframe(express_gbp.head())
    else:
        st.error("当前输入的文件名对应文件不存在,请检查输入是否正确")
else:
    st.info("请输入CSV文件名后开始数据处理")
  • 如果你不想加条件判断,也可以给st.text_input传入value参数设置一个默认存在的文件名作为初始值,保证首次加载时路径有效,但非空判断的方案交互逻辑更友好,更推荐使用。
  • Windows环境下Python本身可以正常识别路径中的正斜杠,不需要特意替换为反斜杠。

内容的提问来源于stack exchange,提问作者Alfie Davies

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:42:14