Ben*_*ain 3 gzip large-data julia
我在 Julia 1.4 中工作。我想打开两个大的 gzipped 文件(file1.gz 和 file2.gz),然后从文件 1 中读取第一行,从文件 2 中读取第一行,对这些文件进行处理,然后移至每个文件的第二行文件等。如果我嵌套两个for循环,这显然不起作用,因为它在移动到 file1 的下一行之前循环通过 file2。文件有两大块,可以一次性打开。
handle1 = GZip.open(file1.gz)
handle2 = GZip.open(file2.gz)
for line1 in eachline(handle1)
for line2 in eachline(handle2)
println(line1,line2)
end
end
Run Code Online (Sandbox Code Playgroud)
有简单的解决方案吗?
是的,您可以使用zip. 您也可以eachline自己管理迭代器,但使用起来zip更容易:
handle1 = GZip.open(file1.gz)
handle2 = GZip.open(file2.gz)
for (line1, line2) in zip(eachline(handle1), eachline(handle2))
println(line1,line2)
end
close(handle1)
close(handle2)
Run Code Online (Sandbox Code Playgroud)
不要忘记关闭您的文件!
另外,请注意,如果两个文件的行数不同,则zip迭代器将在两个文件中的第一个用完时停止。