56 votes

Comment lire une ligne aléatoire d’un fichier ?

Existe-t-il une méthode intégrée pour le faire? Si ce n’est pas le cas, comment puis-je le faire sans coûter trop cher?

53voto

Tony Veijalainen Points 2579
<pre><code></code><p>Pour un fichier très long : cherchez à placer aléatoirement dans le fichier en fonction de sa longueur et trouvez deux caractères de nouvelle ligne après la position (ou la nouvelle ligne et la fin du fichier). Refaites 100 caractères avant ou à partir du début du fichier si la position de recherche d’origine était <100 si nous nous sommes retrouvés à l’intérieur de la dernière ligne.</p><p>Cependant, c’est trop compliqué, car le fichier est un érilatateur. Alors faites-en une liste et prenez random.choice (si vous en avez besoin de plusieurs, utilisez random.sample):</p><pre><code></code></pre></pre>

18voto

cji Points 2536

Cela dépend de ce que vous entendez par « trop » de frais généraux. Si le stockage d’un fichier entier en mémoire est possible, alors quelque chose comme

ferait l’affaire.

4voto

ideasman42 Points 1682

Si vous ne souhaitez pas lire l’intégralité du fichier, vous pouvez rechercher au milieu du fichier, puis rechercher à l’envers la nouvelle ligne et appeler `` .

Voici un script Python3 qui fait exactement cela,

Un inconvénient de cette méthode est que les lignes courtes ont moins de chances d’apparaître.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X