Чтение блоков данных из файла в Python

Я новичок в python и пытаюсь прочитать "блоки" данных из файла. Файл написан примерно так:

# Some comment
# 4 cols of data --x,vx,vy,vz
# nsp, nskip =           2          10


#            0   0.0000000


#            1           4
 0.5056E+03  0.8687E-03 -0.1202E-02  0.4652E-02
 0.3776E+03  0.8687E-03  0.1975E-04  0.9741E-03
 0.2496E+03  0.8687E-03  0.7894E-04  0.8334E-03
 0.1216E+03  0.8687E-03  0.1439E-03  0.6816E-03


#            2           4
 0.5056E+03  0.8687E-03 -0.1202E-02  0.4652E-02
 0.3776E+03  0.8687E-03  0.1975E-04  0.9741E-03
 0.2496E+03  0.8687E-03  0.7894E-04  0.8334E-03
 0.1216E+03  0.8687E-03  0.1439E-03  0.6816E-03


#          500  0.99999422


#            1           4
 0.5057E+03  0.7392E-03 -0.6891E-03  0.4700E-02
 0.3777E+03  0.9129E-03  0.2653E-04  0.9641E-03
 0.2497E+03  0.9131E-03  0.7970E-04  0.8173E-03
 0.1217E+03  0.9131E-03  0.1378E-03  0.6586E-03

and so on

Теперь я хочу иметь возможность указывать и читать только один блок данных из этих многих блоков. Я использую numpy.loadtxt('filename',comments='#')для чтения данных, но он загружает весь файл за один раз. Я искал в Интернете, и кто-то создал патч для процедуры numpy io, чтобы указать блоки чтения, но его нет в основном numpy.

Гораздо проще выбрать блоки данных в gnuplot, но мне придется написать процедуру для построения графика функций распределения. Если бы я мог понять, как читать определенные блоки, в python это было бы намного проще. Кроме того, я переношу все свои коды визуализации на python из IDL и gnuplot, поэтому было бы неплохо иметь все на python, а не разбрасывать вещи по нескольким пакетам.

Я подумал о том, чтобы вызвать gnuplot из Python, вывести блок в таблицу и назначить вывод какому-то массиву в Python. Но я все еще начинаю, и я не мог понять синтаксис, чтобы сделать это.

Любые идеи, указатели на решение этой проблемы были бы очень полезны.

5
задан Brian Tompsett - 汤莱恩 2 December 2015 в 22:22
поделиться