La lecture des blocs de données à partir d'un fichier en Python

Je suis nouveau sur python et suis en train de lire "blocs" de données à partir d'un fichier. Le fichier est écrit quelque chose comme:

# 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

Maintenant, je veux être en mesure de préciser et de lire en un seul bloc de données de ces nombreux blocs. Je suis en utilisant numpy.loadtxt('filename',comments='#') pour lire les données, mais il charge le fichier en entier en une seule fois. J'ai cherché en ligne et quelqu'un a créé un patch pour le numpy io routine pour spécifier la lecture de blocs, mais il n'est pas dans le courant dominant de numpy.

Il est beaucoup plus facile de choisir les blocs de données dans gnuplot mais j'aurais du écrire la routine de tracer les fonctions de distribution. Si je peux comprendre à la lecture des blocs spécifiques, il serait beaucoup plus facile en python. Aussi, je me déplace tous mes visualisation des codes python à partir d'IDL et gnuplot, si c'est agréable d'avoir tout en python au lieu d'avoir des choses un peu éparpillés dans plusieurs packages.

J'ai pensé à appeler gnuplot à partir de l'intérieur de python, de tracer un bloc sur une table et affectation de la sortie de certains de tableau en python. Mais je suis toujours en partant et je ne pouvais pas comprendre la syntaxe pour le faire.

Les idées, les pointeurs de résoudre ce problème serait d'une grande aide.

  • Si vous souhaitez que l'utilisateur de spécifier, de dire une paire de valeurs (i,j) et de lire toutes les lignes entre la ligne "# i j" et la prochaine ligne vide?
  • Alsmot! La chose exacte que je veux être en mesure de faire est d'être capable de spécifier i,j où i est le bloc de départ et j est le dernier bloc et un bloc est défini par les lignes séparées par deux ou plusieurs des lignes vides.
InformationsquelleAutor toylas | 2012-05-09