【问题标题】:Create/Read files with Python in Graal VM在 Graal VM 中使用 Python 创建/读取文件
【发布时间】:2020-06-25 22:35:32
【问题描述】:

我正在使用 Graal VM,使用 Java 和 Python 等组合语言。尝试执行 Python sintax 以使用 context.eval() 读取/创建文件时遇到问题。

我在终端中使用 Graalpython 使用此代码:

out_file = File.new("cadena.txt", "w+")
out_file.puts("write your stuff here")
out_file.close 

并且有效,但是当我尝试运行代码以使用 Java 读取 context.eval() 中的文件时:

codigoPython += "fichw = open('cadena.txt','r')";
codigoPython += "fichw.read() ";
codigoPython += "fichw.close() ";
Value filecontent = context.eval("python", codigoPython);

它抛出了这个错误:

PermissionError: (1, Operation not allowed, cadena.txt, None, None)

我也尝试使用 sudo 和 sudo su 运行它,但它给了我同样的错误。有谁知道为什么会这样?

谢谢

【问题讨论】:

    标签: java python file graalvm graalpython


    【解决方案1】:

    你需要给你的上下文权限来做 IO:

    Context context = Context.newBuilder("python").allowIO(true).build();
    

    对于实验/原型设计,允许一切可能很有用:

    Context context = Context.newBuilder("python").allowAllAccess(true).build();
    

    【讨论】:

    • 关于所有需要和可能的 Context 配置的文档在哪里?
    • 这可能就是你要找的东西:graalvm.org/reference-manual/embed-languages?
    • 嗯,该文档并不清楚必须传递给上下文以启用某些特定 Python 功能的内容。我会选择allowAllAccess(true),直到有任何提示 Python 到底需要什么。
    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2017-05-12
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多