我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我在zip文件中遇到一个zip文件时,我也想处理它,但是遇到了错误。
Julia ZipFile文档在这里:https://zipfilejl.readthedocs.io/en/latest/
以下是代码:
using ZipFile
using DataFrames
function process_zip(zip::ZipFile.ReadableFile)
if split(zip.name,".")[end] == "zip"
r = ZipFile.Reader(zip) #error: MethodError: no method matching seekend(::ZipFile.ReadableFile)
for f in r.files
process_zip(f)
end
end
if split(zip.name,".")[end] == "csv"
df = readtable(zip) #for now just read it into a dataframe
end
end
r = ZipFile.Reader("yourzipfilepathhere");
for f in r.files
process_zip(f)
end
close(r)
对ZipFile.Reader的调用给出错误:
MethodError: no method matching seekend(::ZipFile.ReadableFile)
Closest candidates are:
seekend(::Base.Filesystem.File) at filesystem.jl:191
seekend(::IOStream) at iostream.jl:57
seekend(::Base.AbstractIOBuffer) at iobuffer.jl:178
...
Stacktrace:
[1] _find_enddiroffset(::ZipFile.ReadableFile) at /home/chuck/.julia/v0.6/ZipFile/src/ZipFile.jl:259
[2] ZipFile.Reader(::ZipFile.ReadableFile, ::Bool) at /home/chuck/.julia/v0.6/ZipFile/src/ZipFile.jl:104
[3] process_zip(::ZipFile.ReadableFile) at ./In[27]:7
[4] macro expansion at ./In[27]:18 [inlined]
[5] anonymous at ./<missing>:?
所以看起来ZipFile包不能处理zip文件中的zip文件,因为它不能对它进行seekend。
关于如何做到这一点的任何想法?
答案 0 :(得分:2)
解决方法是将zip文件读入IOBuffer。 ZipFile.Reader能够处理IOBuffer。这是工作代码:
git remote set-url origin \
ec2-user@ec2-54-89-205-210.compute-1.amazonaws.com:/root/testGitRoot