朱莉娅-读取文件的每358行

时间:2019-05-29 15:29:32

标签: file io julia

我正在为我的晶体进行一些计算。我的文件具有大约15,750,756个字符串格式的x-y-z坐标。我想阅读每358行中的信息,但我不知道该怎么做。

我只知道此代码。但是它将读取每行而不是每358行。

file = open(trajectory_file_path)
for i in eachline(file)
#What to do here?
    append!(defect_positions,[split(i[4:end])] )
end
end
close(file)

1 个答案:

答案 0 :(得分:2)

我想您在文件test.csv中包含以下几行:

1 2 3
4 5 6
...
100 101 102
...

例如,包含358行以上,三个值代表您的x-y-z坐标。

要读取每358行并将其存储在数组defect_positions中,可以执行以下操作:

function read_some_lines(filepath::String)

    defect_positions = Array{Array{SubString{String}, 1}, 1}(undef, 0)
    file = open(filepath)
    counter = 0
    for i in eachline(file)
        if (counter%358 == 0)
            push!(defect_positions,split(i))
        end
        counter += 1
    end
    close(file)
    defect_positions
end

read_some_lines("./test.csv")

例如,您可能希望将代表坐标的字符串转换为IntegersFloat64

function read_some_lines(filepath::String)

    defect_positions = Array{Array{Int, 1}, 1}(undef, 0)
    file = open(filepath)
    counter = 0
    for i in eachline(file)
        if (counter%358 == 0)
            push!(defect_positions,parse.(Int,split(i)))
        end
        counter += 1
    end
    close(file)
    defect_positions
end

read_some_lines("./test.csv")