У меня небольшая проблема с чтением данных из CSV-файлов, сгенерированных Matlab.
Сначала немного общей информации:
ОС: MA C ОС Catalina 10.15.3 Компилятор Fortran: gfortran 9.2 (обновление oct 2019, сообщается для Catalina OS). среда программирования: Elcipse 2019-12 (4.14.0)
Вот фрагмент кода, с которым у меня возникли проблемы:
filename='positie_frame_cam'
extension='.txt'
do icam=1,6,1
write (getal,'(I1)') icam ! converting integer to string using an 'internal file'
totalname=filename//getal//extension
print*,totalname
open(unit=icam+10,file=totalname, form='formatted',action='read')
nlines(icam)=0
iop=0
i=0
do while (iop.ge.0)
i=i+1
write(0,*)' regel nummer ',i
read(icam+10,*,iostat=iop)tel,DUMY(1),DUMY(2),&
DUMY(3),DUMY(4),DUMY(5),DUMY(6),DUMY(7)
write(0,*) 'iostat=',iop
write(0,*) tel,DUMY(1),DUMY(2),&
DUMY(3),DUMY(4),DUMY(5),DUMY(6),DUMY(7)
nlines(icam)=nlines(icam)+1
if (iop.ge.0) then
nlines(icam)=nlines(icam)-1
write(0,*) 'something went wrong!'
close(icam+10)
endif
if (iop.eq.-1)then
write(0,*)'eof'
close(icam+10)
exit
endif
end do
end do
Вот пример 6 файлов, которые я пытаюсь прочитать:
1,0.00000000,0.36611265,0.05310654,0.60107656,-0.02129885,0.99435631,-0.10393212
1,0.00833892,0.36611265,0.05310654,0.60107656,-0.02129885,0.99435631,-0.10393212
1,0.01667784,0.36486442,0.05303874,0.59982310,-0.02163688,0.99431165,-0.10428895
1,0.02501677,0.35989577,0.05282108,0.59855295,-0.02244646,0.99420581,-0.10512358
1,0.03335569,0.35492529,0.05268669,0.59727332,-0.02325602,0.99409861,-0.10595804
1,0.04169461,0.35368452,0.05266613,0.59726437,-0.02341294,0.99407797,-0.10611699
1,0.05003353,0.35491671,0.05268653,0.59602339,-0.02343777,0.99407317,-0.10615646
1,0.05837246,0.35862988,0.05277895,0.59479665,-0.02314764,0.99410979,-0.10587683
1,0.06671138,0.36359068,0.05297500,0.59481924,-0.02251773,0.99419203,-0.10523858
1,0.07505030,0.36483061,0.05303698,0.59482341,-0.02236010,0.99421248,-0.10507885
Это вывод, который я получаю для одного файла:
Last login: Thu Mar 12 09:19:00 on ttys001
/Users/fclemens/eclipse-workspace/Fit_ellipsoid/Release/Fit_ellipsoid ; exit;
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
(base) wlan-145-94-195-39:~ fclemens$ /Users/fclemens/eclipse-workspace/Fit_ellipsoid/Release/Fit_ellipsoid ; exit;
positie_frame_cam1.txt
regel nummer 1
iostat= 0
1 0.0000000000000000 0.36611264999999998 5.3106540000000001E-002 0.60107655999999998 -2.1298850000000001E-002 0.99435631000000002 -0.10393212000000000
something went wrong!
regel nummer 2
iostat= -1
1 0.0000000000000000 0.36611264999999998 5.3106540000000001E-002 0.60107655999999998 -2.1298850000000001E-002 0.99435631000000002 -0.10393212000000000
eof
Итак, очевидно, что запись 1 успешно прочитана, но затем первая запись снова читается вместо второй, и eof обнаруживается. Я не уверен, как решить эту проблему.