2010-03-26 7 views
3

Hey. Comment puis-je obtenir un nombre total de lignes dans un fichier (ne pas le faire avec une boucle). Je lis le fichier CSV.Rails - nombre de lignes dans un fichier

Exemple 1

CSV.open('clients.csv', 'r') 

Exemple 2

FasterCSV.foreach('clients.csv') 

Thx.

Répondre

7

Quelle est la taille de votre fichier?

Cette option charge le fichier entier en mémoire, donc s'il y a des problèmes de taille/mémoire, cela pourrait ne pas fonctionner.

numrows = FasterCSV.read('clients.csv').size 

Cette option utilise le module CSV intégré de Ruby, qui, comme vous le savez, est assez lent, mais il fonctionne. Il charge également le fichier en mémoire:

numrows = CSV.readlines('clients.csv').size 

Les deux FasterCSV.read et CSV.readlines matrices de retour de tableaux, de sorte que vous pouvez utiliser toute la magie du tableau que vous voulez sur les résultats.

+0

Ruby 1.9 ne supporte pas FasterCSV –

+0

Ensuite, je suppose que l'autre solution pourrait être plus utile dans Ruby 1.9 - c'est lent mais ça marche :) Merci pour le heads-up. – Roadmaster

+1

@VP Je pense que ce n'est pas tout à fait correct. En fait FasterCSV _is_ le csv dans 1.9: http://stackoverflow.com/a/6090840/603309 – Kjellski

Questions connexes