我设法在浏览器中运行了Pyodide。我创建了hello.txt
文件。但是我怎样才能访问它。
Pyodide
https://github.com/iodide-project/pyodide/blob/master/docs/using_pyodide_from_javascript.md
pyodide.runPython('open("hello.txt", "w")')
我在chrome开发工具中尝试了什么?
pyodide.runPython('os.chdir("../")')
pyodide.runPython('os.listdir()')
pyodide.runPython('os.path.realpath("hello.txt")')
listdir
的输出
["hello.txt", "lib", "proc", "dev", "home", "tmp"]
realpath
的输出
"/hello.txt"
此外,
pyodide.runPython('import platform')
pyodide.runPython('platform.platform()')
输出
"Emscripten-1.0-x86-JS-32bit"
chrome devtools控制台中的所有输出。
它是在根文件夹中创建的。但如何在文件资源管理器中访问它,或者无论如何将文件复制到下载文件夹?
感谢
然而,您可以将文件传递给JavaScript,从中创建一个Blob,然后下载它
let txt = pyodide.runPython(`
with open('/test.txt', 'rt') as fh:
txt = fh.read()
txt
`);
const blob = new Blob([txt], {type : 'application/text'});
let url = window.URL.createObjectURL(blob);
window.location.assign(url);
使用pyodide中包含的类型转换(即(,也应该可以从Python端完成所有这些操作
from js import Blob, document
from js import window
with open('/test.txt', 'rt') as fh:
txt = fh.read()
blob = Blob.new([txt], {type : 'application/text'})
url = window.URL.createObjectURL(blob)
window.location.assign(url)
然而,目前,不幸的是,这并不奏效,因为这取决于pyodide#788是否首先得到解决。
我修改了rth的答案。它将下载文件名为的文件。
let txt = pyodide.runPython(`
with open('/test.txt', 'rt') as fh:
txt = fh.read()
txt
`);
const blob = new Blob([txt], {type : 'application/text'});
let url = window.URL.createObjectURL(blob);
var downloadLink = document.createElement("a");
downloadLink.href = url;
downloadLink.download = "test.txt";
document.body.appendChild(downloadLink);
downloadLink.click();