Ho un problema con in nomi dei file.
Prima di tutto la mia configurazione:
Ubuntu 9.04 64bit
Utilizzo le API (in ruby) di un programma nativo per Windows tramite
wine e le wxruby.
Utilizzando le Wx::DirDialog ottengo il nome di un percorso che
memorizzo nella varibile $nomecartella
$nomecartella = ‘Z:\home\pippo’
a questo appendo il nome di un file che ho memorizzato in una nuova
variabile: $nomefile= ‘miofile.txt’
per mezzo di
File.join($nomecartella,$nomefile)
ottenendo
Z:\home\alessandro/miofile.txt
come faccio a sostituire gli \ con /?
2010/4/23 Alessandro B. [email protected]
Z:\home\alessandro/miofile.txt
Sicuramente con una String#gsub, ma e’ strano, credevo anche io che
File.join generasse dei nomi di file validi sulla piattaforma su cui
gira lo
script. mumble…
Il 23 aprile 2010 15.45, Alessandro B. [email protected] ha
scritto:
memorizzo nella varibile $nomecartella
ottenendo
Z:\home\alessandro/miofile.txt
come faccio a sostituire gli \ con /?
Ciao,
Ubuntu non c’entra: File.join su windows si comporta
così.
In ogni caso File.open(‘Z:\home\alessandro/miofile.txt’) funziona, ma
magari è brutto da mostrare all’utente.
Potresti reimplementarlo oppure usare File.join e poi gsub, per brutto
che sia.
Non fare semplicemente join, perché quantomento File.join controlla se
i vari pezzi contengono già \ o / iniziali o finali e non li
duplica…
pietro
Il 23 aprile 2010 17.16, Alessandro B. [email protected] ha
scritto:
Usare gsub è proprio quello che volevo fare: ma il comando
$nomefile.gsub(“",”/“) non è corretto.
nomefile = nomefile.gsub(”\", “/”)
p.s. Naturalmente non sono affari miei, ma ti sconsiglio di usare
variabili globali.
pietro
Pietro G. wrote:
Ciao,
Ubuntu non c’entra: File.join su windows si comporta
cos�.
In ogni caso File.open(‘Z:\home\alessandro/miofile.txt’) funziona, ma
magari � brutto da mostrare all’utente.
Potresti reimplementarlo oppure usare File.join e poi gsub, per brutto
che sia.
Non fare semplicemente join, perch� quantomento File.join controlla se
i vari pezzi contengono gi� \ o / iniziali o finali e non li
duplica…
pietro
Non posso usare File.open, perchè non devo essere io ad aprire il file
ma il programma principale… (:o
Usare gsub è proprio quello che volevo fare: ma il comando
$nomefile.gsub("","/") non è corretto. Forse dovrei provare con le
espressioni regolari ma non le ho mai studiate!!! sigh!!!
Come faccio?
Pietro G. wrote:
Il 23 aprile 2010 17.16, Alessandro B. [email protected] ha
scritto:
Usare gsub � proprio quello che volevo fare: ma il comando
$nomefile.gsub(“",”/“) non � corretto.
nomefile = nomefile.gsub(”\", “/”)
p.s. Naturalmente non sono affari miei, ma ti sconsiglio di usare
variabili globali.
pietro
Grazie pietro, ma (sarò certamente io) non funziona!!
provato da irb:
a=“C:\aaa\bbb/prova.txt”
b = a.gsub(“\”,“/”)
mi da nuovamente:
“C:\aaa\bbb/prova.txt”
Luca De Marinis wrote:
Anche a me! mi ci stavo scervellando, poi ho pensato… sara’ una
interazione
con readline/irb/qualcosa??
pero’ se crei uno script e ci scrivi:
#!/usr/bin/ruby
pdio = “C:\foo”
puts pdio.gsub(’\’, ‘/’)
funziona come ti aspetteresti!
Vero. Ma io, usando Wx::DirDialog.get_path ottengo i percorsi con un
solo ‘/’!!!
Come se po fà ?
2010/4/23 Alessandro B. [email protected]
Pietro G. wrote:
Il 23 aprile 2010 17.16, Alessandro B. [email protected] ha
scritto:
“C:\aaa\bbb/prova.txt”
Anche a me! mi ci stavo scervellando, poi ho pensato… sara’ una
interazione
con readline/irb/qualcosa??
pero’ se crei uno script e ci scrivi:
#!/usr/bin/ruby
pdio = “C:\foo”
puts pdio.gsub(‘\’, ‘/’)
funziona come ti aspetteresti!
2010/4/23 Alessandro B. [email protected]
Luca De Marinis wrote:
Vero. Ma io, usando Wx::DirDialog.get_path ottengo i percorsi con un
solo ‘/’!!!
No aspetta, e’ che per mettere in una stringa uno \ ne devi mettere
due…
guarda:
#!/usr/bin/ruby
pdio = “C:\foo”
puts “Prima: #{ pdio }”
puts “Dopo: #{ pdio.gsub(‘\’, ‘/’) }”
ovvero, ne’ la dichiarazione di variabile dice “metti due backslash” ne’
la
gsub dice “sostituisci due backslash con uno slash”… e’ solo che per il
parser ruby il modo corretto di scrivere uno \ dentro una stringa e’ \
Mah… diciamo che credo fortemente che anche quello ho generato nella
prima
assegnazione alla variabile pdio sia di fatto un solo \ - solo che per
non
farlo interpretare come un’altra cosa ho dovuto escaparlo!
Luca De Marinis wrote:
No aspetta, e’ che per mettere in una stringa uno \ ne devi mettere
due…
guarda:
#!/usr/bin/ruby
pdio = “C:\foo”
puts “Prima: #{ pdio }”
puts “Dopo: #{ pdio.gsub(’\’, ‘/’) }”
ovvero, ne’ la dichiarazione di variabile dice “metti due backslash” ne’
la
gsub dice “sostituisci due backslash con uno slash”… e’ solo che per il
parser ruby il modo corretto di scrivere uno \ dentro una stringa e’ \
Mah… diciamo che credo fortemente che anche quello ho generato nella
prima
assegnazione alla variabile pdio sia di fatto un solo \ - solo che per
non
farlo interpretare come un’altra cosa ho dovuto escaparlo!
Hai ragione!!! In effetti nel mio script funziona, ma in irb invece
no!!!