使用PyScript读取CSV文件时出现“No such file or directory”错误求助
解决PyScript读取本地CSV文件的FileNotFoundError问题
问题原因
PyScript基于Pyodide运行在浏览器沙箱环境中,其虚拟文件系统与本地操作系统的文件系统完全隔离。即使CSV文件与HTML文件处于同一目录,直接使用pd.read_csv("salaries.csv")也无法访问——因为该代码会在Pyodide的虚拟文件系统中查找文件,而非本地磁盘。
解决方案
通过浏览器的fetch API获取CSV文件内容,再传递给pandas解析。具体实现如下:
<py-env> - matplotlib - numpy - seaborn - pandas </py-env> <py-script> import pandas as pd from io import StringIO import js async def load_csv(): # 通过fetch请求获取本地CSV文件 response = await js.fetch("salaries.csv") # 将响应转为文本格式 csv_content = await response.text() # 用StringIO包装文本,供pandas读取 df = pd.read_csv(StringIO(csv_content)) # 示例:打印数据框前5行验证 print(df.head()) # 执行异步加载函数 load_csv() </py-script>
额外注意事项
- 避免file://协议运行:直接双击HTML文件以
file://协议打开时,可能触发浏览器的CORS限制,导致fetch请求失败。建议启动本地静态服务器运行:
然后访问# 在HTML文件所在目录执行 python -m http.serverhttp://localhost:8000/你的文件名.html即可正常加载CSV。 - 关于os库与pwd命令:Pyodide中的
os模块操作的是虚拟文件系统,与本地磁盘无关;pwd命令在Pyodide环境中默认不可用,因此这些方法无法定位到本地CSV文件。
内容的提问来源于stack exchange,提问作者Castle Frank
相关产品推荐
相关产品推荐

