1
votes

Lire une ligne aléatoire dans un fichier

Je veux obtenir une ligne aléatoire d'un fichier vers mon robot discord mais je ne sais pas comment.

a déjà essayé quelque chose sur le site Web, mais cela n'aide pas du tout, aucun d'entre eux ne fonctionne.

Avez-vous de l'aide?

[js]


2 commentaires

Montrez-nous ce que vous avez essayé


Double possible de Récupération d'une ligne aléatoire d'un fichier


3 Réponses :


0
votes

Vous pouvez utiliser cette méthode:

function getRandomLine(filename){
  fs.readFile(filename, function(err, data){
    if(err) throw err;
    var lines = data.split('\n');
    // this is random line
    const readedLine = lines[Math.floor(Math.random()*lines.length)];
    console.log(readedLine);
 })
}

Pour plus d'informations, vous pouvez lire ceci: Récupérer une ligne aléatoire d'un fichier


2 commentaires

déjà essayé, comment je peux faire: console.log (the_random_line_text)


const t = lignes [Math.floor (Math.random () * lines.length)]; console.log (t);



0
votes

Pendant que l'autre solution fonctionne, vous pouvez utiliser ce code pour le faire de manière synchrone, ce qui facilite un peu le travail avec:

function getRandomLine(filename){
   var data = fs.readFileSync(filename, "utf8");
   var lines = data.split('\n');
   return lines[Math.floor(Math.random()*lines.length)];
}
var the_random_line_text = getRandomLine('file.txt');
console.log(the_random_line_text);

Remarque: car cela bloque maintenant le Si vous lisez des fichiers très volumineux, soyez prudent, cela pourrait causer des problèmes. Si vous utilisez effectivement un très gros fichier, je vous recommande de le charger en tant que tableau lorsque le programme démarre et de simplement réfréner ce tableau, sans lire le fichier à chaque fois que cela est nécessaire.


0 commentaires

0
votes

J'ai trouvé une méthode plus simple.

message.channel.send(getRandomLine())

Et si vous essayez d'envoyer un message dans une commande.

fs = require('fs')
var data;
fs.readFile('filename.txt', 'utf8', function (err,rawData) {
  if (err) {
    return console.log(err);
  }
  data = rawData.split('\n');
});

function randomInt (low, high) {
    return Math.floor(Math.random() * (high - low) + low);
}

function getRandomLine(){
  return data[randomInt(0,data.length)];
}

Mettez cela dans votre commande.

Remplacez "filename.txt" par votre nom, gardez "utf8" le même.

REMARQUE: fonctionne pour les gros fichiers.


0 commentaires