我正在为我的晶体进行一些计算。我的文件具有大约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)
答案 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")
例如,您可能希望将代表坐标的字符串转换为Integers
或Float64
。
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")