Rinominare file con ruby

Salve a tutti, ho un programmino molto semplice che sto cercando di
realizzare con ruby, questo programmino altro non fa che prendere degli
input dall’utente, memorizzarli, prendere il contenuto di un altro file,
memorizzare anch’esso e in fine creare un unico file con i dati immessi
dall’utente e quelli prelevati dal file esterno.

Sino a qui è stato elettrizzante riuscirci con una certa facilità, la
cosa che adesso mi sta spremendo le meningi e che, purtroppo, non riesco
a far scegliere il nome del file creato in output.

Dato che per la creazione del file utilizzo il seguente codice:

File.open(“nuovofile.txt”, ‘w’) do |scrivi|
codice
codice
end…

vorrei passare al posto di “nuovofile.txt” un nome preso in input
dall’utente o in alternativa, sempre tramite input dell’utente,
rinominare il file “nuovofile.txt”

Mi sono letto più di una volta questa pagina:
Class: File (Ruby 2.0.0) , provando e riprovando, ma
sino ad ora non ne sono venuto a capo, potreste aiutarmi cortesemente?
Grazie.

On Aug 2, 2013, at 8:06 PM, “Angelo Raffaele L.”
[email protected] wrote:

Sino a qui stato elettrizzante riuscirci con una certa facilit, la
cosa che adesso mi sta spremendo le meningi e che, purtroppo, non riesco
a far scegliere il nome del file creato in output.

Ciao Angelo, sono contenta che ruby ti elettrizzi :slight_smile:

vorrei passare al posto di “nuovofile.txt” un nome preso in input
dall’utente o in alternativa, sempre tramite input dell’utente,
rinominare il file “nuovofile.txt”

Puoi ottenere il primo comportamento con

File.open(ARGV[0]) do |scrivi|

ARGV l’array che contiene i valori che passi da linea di comando al tuo
script.

In alternativa c’ il metodo di classe File.rename(‘vecchio’, ‘nuovo’)…

Se invece intendi un’interazione tra la console e l’utente, puoi usare
STDIN.gets per prendere i valori passati da console dall’utente.

Qui http://zetcode.com/lang/rubytutorial/io/ trovi un tutorial sull’IO
in ruby e qui
Ruby: What's the difference between STDIN.gets() and gets.chomp()? - Stack Overflow
una spiegazione della differenza tra STDIN.gets e il semplice gets.

Spero di esserti stata utile, in caso contrario continua a chiedere :slight_smile:


Monica G.
Developer ~=[,_,]:3 Usability Queen
@ freego Network - www.freegoweb.it
[email protected]
m. + 39 392 76 51 040

La soluzione era molto semplice:

print "scegli il nome del file: "
nomefile=gets.chomp
File.open nomefile, ‘w’ do |scrivi|
codice
codice
end…

grazie per il supporto.

L’importante esserci riuscito!
Good job :smiley:

Monica
Sent from my iPhone

Angelo Raffaele L. wrote in post #1117581:

La soluzione era molto semplice:

Anche se ci sono arrivato dopo ore e ore di tentantativi. :smiley: