7
votes

Comment supprimer la dernière ligne de fichier en rubis?

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: xxx


0 commentaires

3 Réponses :


1
votes

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: xxx

alternativement, juste io.sek () À l'envers sur la dernière nouvelle ligne, le cas échéant: xxx


0 commentaires

4
votes

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


1 commentaires

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.



6
votes

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 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.

peut-être constructeur:


2 commentaires

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.