提问人:Antonello 提问时间:9/2/2022 更新时间:9/2/2022 访问量:117
如何将 Julia 流转换为 Python 包的“字节内容”?
How I do convert a Julia stream to "byte content" for a Python package?
问:
我维护 OdsIo.jl,一个 Julia 包,专门为 ods 文件包装 ezodf,一个用于各种 OpenDocument 格式的 Python 包,
我的“ods_readall”函数从调用 开始。ezodf.opendoc
ezodf.opendoc
支持作为输入,除了文件名之外,文件字节内容本身:
ezodf.opendoc(filename)¶
Parameters: filename (str) – a filename or the file-content as bytes
有没有办法将它与 Julia 流(例如,这个问题中的网络 gzipped 文件)一起使用纯文件?
答:
0赞
Antonello
9/2/2022
#1
这似乎有效,至少对于 HTTP,这就是我感兴趣的:
using HTTP, Pipe, PyCall
const pyio = PyNULL()
const ezodf = PyNULL()
copy!(pyio, pyimport("io"))
copy!(ezodf, pyimport("ezodf"))
function readstream(istream)
return ezodf.opendoc(pyio.BytesIO(istream))
end
urlData = "https://github.com/sylvaticus/OdsIO.jl/raw/master/test/spreadsheet.ods"
doc = @pipe HTTP.get(urlData).body |> readstream(_)
评论
bytes = read("myfile.odt")
在 Julia 中以字节数组(无符号 8 位字符)的形式为您提供文件,只要您知道 Python 包的期望,它应该可以作为字节传递给 Python。您也可以从 Julia IO 流中获取字节,bytes = read(iostream)