Прочитать текстовый файл, используя fortran, где начальные 18 строк - строки, а остальные строки - действительные числа в массиве 1000 * 8? - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть текстовый файл, в котором первые несколько строк являются текстовыми, а остальные строки содержат данные в виде действительных чисел. Мне просто нужно, чтобы массив реальных чисел был сохранен в новом файле. Для этого я читаю итоговые строки файла, для которых вывод правильный, а затем пытаюсь прочитать действительные числа из конкретных номеров строк. Я не могу понять, как читать эти данные. Ниже приведена часть файла. Также у меня есть много подобных файлов для чтения.


AptitudeQT paperI:  12233105
Latitude :   30.00  S
Longitude:   46.45  E
Attemptone Time:  2017-03-30-09-03
End Time:  2017-03-30-14-55

        Height(agl):        m
           Pressure:        hPa
        Temperature:        deg C
           Humidity:        %RH
          Uvelocity:        cm/s
          Vvelocity:        cm/s
          WindSpeed:        cm/s
      WindDirection:        deg


---------------------------------------
        10      1008.383            27.655            62.200          -718.801            -45.665           720.250            266.500
        20      1007.175            27.407            62.950          -792.284            -18.481           792.500            268.800

1 Ответ

0 голосов
/ 11 февраля 2020

Есть много примеров, как пропустить / прочитать строки, такие как this

Но, чтобы подвести итог, вариант A - пропустить заголовок и прочитать данные только:

! Skip first 17 lines
do i = 1, 17
  read (unit,*,IOSTAT=stat) ! Dummy read
  if ( stat /= 0 ) stop "error"
end do 

! Read data
do i = 1, 1000
  read (unit,*,IOSTAT=stat) data(:,i)
  if ( stat /= 0 ) stop "error"
end do 

Если у вас много таких файлов, я предлагаю обернуть это в подпрограмму / функцию.

Вариант B - использовать утилиту unix tail для отбрасывания заголовка (более подробная информация здесь ):

tail -n +18 file.txt
...