
PyScript 无法直接访问本地文件系统,但可通过配置 files 键将远程或本地托管的文件预加载至其内置虚拟文件系统,从而在 Python 代码中安全调用 open() 等标准 I/O 函数。
pyscript 无法直接访问本地文件系统,但可通过配置 `files` 键将远程或本地托管的文件预加载至其内置虚拟文件系统,从而在 python 代码中安全调用 `open()` 等标准 i/o 函数。
在 PyScript 中运行依赖文件的 Python 脚本时,常见的错误是 FileNotFoundError —— 这并非代码缺陷,而是由浏览器沙箱安全策略导致:PyScript 运行在 Web Worker 或主线程中,默认完全隔离于用户本地磁盘,open()、os.listdir() 等操作均指向一个空的、内存驻留的虚拟文件系统(VFS),而非真实文件系统。
要使文件“可用”,必须显式将文件内容注入该 VFS。PyScript 提供了官方推荐的方式:通过
✅ 正确做法:使用 files 配置加载文件
files 是一个对象数组,每个条目指定一个 src(HTTP 可达路径)和一个 name(在 VFS 中的路径名,支持子目录):
Orz企业网站管理系统整合了企业网站所需要的大部分功能,并在其基础上做了双语美化。压缩包内有必须的图片psd源文件,方便大家修改。 Orz企业网站管理系统功能: 1.动态首页 2.中英文双语同后台管理 3.产品具有询价功能 4.留言板功能 5.动态营销网络 6.打印功能 7.双击自动滚动 Orz企业网站管理系统安装 1、请将官方程序包解压后上传至您的虚拟主机即可正常使用; 2、后台管理面板登录:
<py-config>
{
"files": [
{"src": "/data/config.json", "name": "config.json"},
{"src": "/assets/input.csv", "name": "data/input.csv"},
{"src": "https://example.com/model.pkl", "name": "models/weights.pkl"}
]
}
</py-config>✅ 加载后,即可在 Python 中像操作本地文件一样使用:
# 成功读取(无需额外权限)
with open("config.json", "r") as f:
config = json.load(f)
with open("data/input.csv", "r") as f:
lines = f.readlines()
# 支持写入(仅限内存中,刷新页面即丢失)
with open("output.txt", "w") as f:
f.write("Hello from PyScript!")⚠️ 注意事项与最佳实践
-
文件必须可跨域访问:若从本地 file:// 协议打开 HTML,多数浏览器会阻止 fetch 请求。✅ 正确做法是使用本地开发服务器:
# Python 内置服务器(端口 8000) python3 -m http.server 8000 # 然后访问 http://localhost:8000/your-app.html
- 路径区分大小写且严格匹配:name: "Data.csv" 与 open("data.csv") 不匹配。
- 不支持动态上传或实时文件选择:files 仅用于初始化时静态加载;如需用户上传,应结合 + FileReader API 手动解析并写入 VFS(需额外 JS 桥接)。
- 避免使用已废弃的 [[fetch]]:旧文档中的 [[fetch]] 配置更复杂、易出错(如缓存行为不透明、缺少错误提示),files 是当前稳定版(≥2024.2.1)唯一推荐方案。
? 总结
PyScript 的安全模型决定了它不能绕过浏览器限制直读本地文件,但 files 配置提供了一种简洁、声明式、可预测的方式,将可信资源注入虚拟文件系统。只要确保文件可通过 HTTP 获取,并在








