首页 > 解决方案 > 如何从 Julia 的两个文件中一次读取一行?

问题描述

我在 Julia 1.4 中工作。我想打开两个大的 gzip 文件(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

有简单的解决方案吗?

标签: juliagziplarge-data

解决方案


是的,您可以使用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)

不要忘记关闭您的文件!

另外,请注意,如果两个文件的行数不同,则zip迭代器将在两个文件中的第一个文件用完时停止。


推荐阅读