Truc bête : je veux lire un très gros fichier de données mais uniquement à partir de la 36000è ligne.
Quel est le moyen le plus rapide ???
Truc bête : je veux lire un très gros fichier de données mais uniquement à partir de la 36000è ligne.
Quel est le moyen le plus rapide ???
Salut!
Ton fichier existe-t-il déjà?
Si non, le plus simple est de l'écrire et de le relire en accès direct.
Si oui, quel est le format d'une ligne?
Jean-Marc Blanc
Ça dépend de la structure du fichier.
Si le fichier est rigoureusement rectangulaire (toutes les lignes ont exactement la même longueur), le Fortran te permet de l'ouvrir en accès direct et d'aller directement à la ligne voulue.
Si c'est un autre type de fichier « structuré » (DBF, XLS, XML, ...), ça dépend vraiment de la structure interne du fichier. Fortran ne permet généralement pas de traiter ces fichiers, mais des librairies existent pour traiter plusieurs de ces fichiers.
Si c'est un simple fichier texte, la seule solution « normale » est la méthode bête : tu lis dans le vide les lignes 1 à 35 999. La difficulté est que ces fichiers séquentiels (vrai sur Windows, DOS, Unix, Linux) n'ont pas de numéros de ligne insérés. Le problème n'est pas Fortran, mais la structure même des fichiers. Tu ne peux pas sauter à la ligne 36 000. Par définition, la ligne 36 000 est la suite de caractères comprise entre le 35 999 ième séparateur de ligne et le 36 000 ième. La seule façon d'y aller est donc de passer à travers tout le fichier et de compter les séparateurs. Dans certains cas, tu peux sauter au caractère 780 000 (par exemple), puis lire quelques caractères et déduire le numéro de ligne. Si ce n'est pas la bonne ligne, tu réessaye en sautant ailleurs.
arg c'est bien ce que je craignais
le fichier existe déjà et est malheureusement de format texte non structuré ...
Partager