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

PyScript脚本无法写入文件问题咨询:可打印却无法创建写入文件?

为什么你的PyScript脚本无法创建本地file.txt文件

核心原因

PyScript运行在浏览器的WebAssembly沙箱环境中,默认使用虚拟文件系统,而非你的本地计算机文件系统。你用open()执行的文件操作,只会在这个隔离的虚拟环境内生效,不会在本地磁盘生成可见的file.txt文件。而print("fgh")能正常显示,是因为PyScript会把print输出重定向到浏览器页面的输出区域,和本地文件系统无关。

两种处理方案

1. 仅在虚拟环境内操作文件(无需本地可见)

如果不需要在本地磁盘看到文件,你的代码其实是有效的,文件会保存在虚拟文件系统中。可以通过以下代码验证:

import os
f = open("file.txt", "a", encoding="UTF-8")
f.write("asd")
f.close() # 注意:最好显式关闭文件,避免资源泄漏
print(os.listdir(".")) # 输出会包含file.txt
print("fgh")

2. 生成可下载的本地文件

如果需要在本地磁盘得到file.txt,需要调用浏览器的文件API来触发下载行为,示例代码如下:

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
    <script defer src="https://pyscript.net/latest/pyscript.js"></script>
  </head>
  <body>
    <py-script>
        from js import document, Blob, URL
        from pyodide.ffi import create_proxy

        # 准备文件内容
        content = "asd"
        # 创建Blob对象存储文本
        blob = Blob.new([content], {"type": "text/plain"})
        # 生成临时下载URL
        download_url = URL.createObjectURL(blob)
        
        # 创建下载链接并触发下载
        download_link = document.createElement("a")
        download_link.href = download_url
        download_link.download = "file.txt"
        download_link.click()
        
        # 释放临时URL资源
        URL.revokeObjectURL(download_url)

        print("fgh")
    </py-script>
  </body>
</html>

这段代码会在浏览器中自动触发file.txt的下载,文件内容为asd。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:01:20