Function 奇怪的动物`read`在发出命令时起作用,但在函数内部不起作用

Function 奇怪的动物`read`在发出命令时起作用,但在函数内部不起作用,function,julia,Function,Julia,我只是想重新开始与朱莉娅(几年前做了一些尝试,但图书馆仍然缺少太多的东西) 我现在正在尝试一些非常简单的方法,但不明白为什么不起作用 如果我直接在函数外部运行这些非常相同的命令,我会得到我想要的,但是如果我将它们放在函数内部,在调用我的read\u datafile函数中的read命令时会出错: using ArgParse, ZipFile, CSV, DataFrames function read_datafile(fp) z = ZipFile.Reader(fp) a

我只是想重新开始与朱莉娅(几年前做了一些尝试,但图书馆仍然缺少太多的东西)

我现在正在尝试一些非常简单的方法,但不明白为什么不起作用

如果我直接在函数外部运行这些非常相同的命令,我会得到我想要的,但是如果我将它们放在函数内部,在调用我的
read\u datafile
函数中的
read
命令时会出错:

using ArgParse, ZipFile, CSV, DataFrames

function read_datafile(fp)
    z = ZipFile.Reader(fp)
    a = z.files[1]
    df = DataFrame(CSV.File(read(a)))
    
    return df
end

read_datafile("./folder1/test.zip")
SystemError:seek:错误的文件描述符

Stacktrace:[1]#systemerror#48 at./error.jl:167[内联][2] systemerror位于./error.jl:167[内联][3]seek位于./iostream.jl:129 [内联][4]读取(::ZipFile.ReadableFile,::Int64) /home/morgado/.julia/packages/ZipFile/fdYkP/src/ZipFile.jl:508[5] 阅读/home/morgado/.julia/packages/ZipFile/fdYkP/src/ZipFile.jl:504 [inlined][6]读取位于./In[14]:4[7]顶层的数据文件(::字符串) [15]中的范围:1

编辑: 添加了更多信息

使用Pkg;包装状态()


我找到了答案,这是ZipFile包中一个5年未解决的bug:(:

需要使用全局变量编写函数:

function read_datafile(fp)
    global z = ZipFile.Reader(fp)
    a = z.files[1]
    df = DataFrame(CSV.File(read(a)))
    
    return df
end

我看不到您似乎收到的错误。您可以通过使用Pkg;Pkg.status())共享
的输出来发布您正在使用的软件包的版本吗?@PaSTE-Sure刚刚添加了这一点。这确实是一种奇怪的行为,在Jupyter笔记本中或通过从命令行调用文件都会发生。
function read_datafile(fp)
    global z = ZipFile.Reader(fp)
    a = z.files[1]
    df = DataFrame(CSV.File(read(a)))
    
    return df
end