J'accède à un fichier et, avant que je l'appaisse, je souhaite supprimer la dernière ligne du fichier. Y a-t-il un moyen efficace de le faire dans Ruby?
C'est ce que j'utilise pour accéder au fichier: p>
3 Réponses :
Le moyen le plus simple est de lire le fichier entier, de retirer le "\ n" à la fin et de la réécrire tout avec votre propre contenu: alternativement, juste io.sek () À l'envers sur la dernière nouvelle ligne, le cas échéant: p>
En supposant que vous souhaitez supprimer toute la dernière ligne du fichier, vous pouvez utiliser cette méthode qui localise le début de la dernière ligne et commence à écrire de là:
last_line = 0
file = File.open(filename, 'r+')
file.each { last_line = file.pos unless file.eof? }
file.seek(last_line, IO::SEEK_SET)
#Write your own stuff here
file.close
Cela fonctionne aussi longtemps que votre texte de remplacement est plus long que le texte d'origine dans la dernière ligne du fichier. Si c'est plus court, le reste sera poussé dans une nouvelle ligne après votre ligne insérée.
Je ne vais pas essayer de deviner ce que vous essayez de faire, mais si vous essayez de vous débarrasser de la balise de fermeture de l'élément racine dans un fichier XML afin que vous puissiez ajouter plus de balises enfants, < EM> Alors em> ajoutez l'étiquette racine de fermeture, je voudrais imaginer qu'il existe des modules rubis qui facilitent cette tâche d'écrire / éditer XML. Juste dire. P>
peut-être constructeur: p>
Hpricot semble également fonctionner: p>
Vous devriez avoir un emploi comme psychique :). C'est exactement ce que j'essayais de faire, c'est un petit travail de piratage, c'est pourquoi je ne faisais pas trop de recherches, mais merci d'avoir passé le mille supplémentaire!
Aucun problème! Désolé, je n'ai pas posté une réponse définitive, mais je suis presque positif, il y a des outils qui le feront pour vous. J'ai cherché environ 15 minutes et j'ai trouvé ces. Bien sûr, vous avez la motivation de la finition de votre projet pour trouver davantage, probablement de meilleures solutions, au cas où ils sont fournis ne suffisent pas.