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

PyScript读取本地CSV文件失败问题求助

解决PyScript无法读取本地磁盘CSV文件的问题

核心原因

PyScript运行在浏览器的Pyodide沙箱环境中,和本地Python环境完全不同——浏览器的安全机制禁止脚本直接访问本地磁盘的绝对路径(比如U:\Project\df.csv),这就是为什么你在普通Python里能跑的代码,到PyScript里就报错。报错里的双反斜杠只是字符串转义的显示问题,不是根本原因。

可行解决方案

方案1:将CSV文件放到Web服务器目录,用相对路径读取

把你的df.csv和HTML文件放在同一个文件夹下(也就是localhost服务的根目录),然后修改代码用相对路径读取:

import pandas as pd
df = pd.read_csv('df.csv', sep='\t')

这样PyScript会通过Web请求获取服务器上的文件,符合浏览器的安全规则。

方案2:让用户主动上传文件(适合需要读取本地任意文件的场景)

用HTML的文件上传组件,让用户选择本地文件后,PyScript再读取文件内容。示例代码:

<body>
  <input type="file" id="file-input" accept=".csv">
  <py-script>
    import pandas as pd
    from pyodide import create_proxy
    from js import document
    from io import StringIO

    def handle_upload(event):
        file = event.target.files[0]
        if not file:
            return
        # 创建FileReader读取文件内容
        reader = js.FileReader.new()
        reader.onload = create_proxy(lambda e: parse_csv(e.target.result))
        reader.readAsText(file)

    def parse_csv(content):
        # 用StringIO把文本内容转为pandas可读取的对象
        df = pd.read_csv(StringIO(content), sep='\t')
        # 这里可以添加数据处理或展示逻辑,比如打印前5行
        print(df.head())

    # 绑定文件上传事件
    file_input = document.getElementById("file-input")
    file_input.addEventListener("change", create_proxy(handle_upload))
  </py-script>
</body>

注意事项

  • 永远不要在PyScript里使用本地磁盘的绝对路径(比如U:\、C:\),浏览器沙箱会直接拦截这类请求。
  • 如果用方案1,要确保你的localhost服务正确指向了包含HTML和CSV文件的目录(比如用python -m http.server启动服务时,要在该目录下执行命令)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:22:39