Esiste una funzione integrata in Ruby per leggere l'intero file senza utilizzare alcun ciclo? Finora, ho incontrato solo metodi che leggono in blocchi (linea o carattere).Come leggere l'intero file in Ruby?
risposta
IO.read("filename")
o
File.read("filename")
Documenti: http://ruby-doc.org/core/classes/IO.html – quantumSoup
Solo per curiosità, perché non riesco a trovare questa funzione qui: http://www.ruby-doc.org/core- 2.1.2/File.html –
@MartinKonecny perché 'File :: read' è in realtà ereditato da' IO :: read' - entrambi sono esattamente gli stessi perché 'File' estende' IO'. –
File.readlines("filename")
Questo è anche un ottimo metodo per leggere tutto da un file e rompere parti separate su ritorni a capo. Il ritorno è una matrice con una riga per elemento.
In particolare, 'readlines' si divide sulla variabile interna' $/', che assume come valore predefinito" \ n ". È possibile ripristinare temporaneamente '$ /', tuttavia, e leggere i file in blocchi delimitati anche in altri modi. – Telemachus
Si prega di ignorare i consigli che indicano "Non si dovrebbe mai borbottare (che è il termine fastidioso per questo) un file". A volte questa è una cosa molto utile e ragionevole da fare.
Supponiamo che stai leggendo un file più volte: buona probabilità che la lettura del file in un array è un'ottimizzazione ragionevole sopra la lettura del file riga per riga, anche tenendo conto che l'o/s sarà memorizzare nella cache il file.
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). - [Dalla recensione] (/ recensione/post di bassa qualità/10916920) – ndn
Siamo spiacenti, ma semplicemente non mi interessa lavorare su un rappresentante. Il consiglio di "non bersi" è semplicemente sbagliato. A volte è una tecnica utile (ho appena ridotto il tempo di esecuzione di un programma di un fattore di 1000 leggendo l'intero file) e non dovrebbe essere deprecato. –
La lettura di un file in memoria in un passaggio (slurping) non è più veloce di una volta che un file raggiunge 1 MB di dimensione. Oltre questo punto è possibile leggere riga per riga più rapidamente ed evitare potenziali problemi di scalabilità. "semplicemente sbagliato" non è utile senza spiegare quando è appropriato. Vedi http://stackoverflow.com/questions/25189262/why-is-slurping-a-file-bad per ulteriori informazioni. –
- 1. Ruby: come posso leggere un file CSV che contiene due intestazioni in Ruby?
- 2. Ruby leggere/scrivere su file in 1 riga del codice
- 3. Leggere la prima riga di un file in Ruby
- 4. Come posso leggere CSV senza quote_char in ruby?
- 5. In Ruby, Come leggere UTF-8 da un socket?
- 6. Come faccio a leggere/scrivere file binari?
- 7. Come leggere da una presa TCPServer in Ruby utilizzando leggere, readpartial e read_nonblock
- 8. Come leggere il file XML in C#?
- 9. Come leggere il file CSV in Android?
- 10. Android: come leggere il file in byte?
- 11. Come leggere il file Avro in PySpark
- 12. Come leggere il file Excel in Scala
- 13. Come leggere in un file txt
- 14. Come leggere il file gzip in Scala
- 15. Come leggere il file binario in C#?
- 16. Come leggere file XML in Android
- 17. Come leggere un file in modo asincrono?
- 18. Come leggere il file pickle?
- 19. Ruby: come caricare un file in Interactive Ruby Console (IRB)?
- 20. Leggere file json in C++
- 21. come ordinare il file in ruby
- 22. Come rinominare i file in ruby
- 23. Come scrivere file (grandi) con Ruby Eventmachine
- 24. Accesso ai file impacchettati in Ruby Gem
- 25. Come leggere un CD come file?
- 26. Ruby: come determinare se il file da leggere è binario o testo
- 27. Scrivi file binario in Ruby
- 28. Continua a leggere da STDOUT del processo esterno in Ruby
- 29. Come leggere un file di testo in crescita in C++?
- 30. come leggere un file csv in ordine inverso in python
Per quello che vale, questo è qualcosa che le persone spesso vogliono ma di cui non hanno veramente bisogno. (E se il file è molto grande, puoi avere una brutta sorpresa quando file inghiottiti divorano vicino a tutta la tua memoria disponibile). Cosa stai cercando in definitiva di realizzare? – Telemachus
L'ho trovato molto utile per lavorare con un file che non era in un formato per tutti i giorni. Stavo leggendo un file nella codifica IBM437 e avevo bisogno di rompere il file nei caratteri oddball, per separare i dati preziosi dalle cose che non mi servivano. Per questo ha senso leggere l'intero file e quindi creare le mie interruzioni di riga dove dovrebbero essere. Altrimenti passerei in ogni riga o ogni personaggio. Invece, potrei semplicemente usarlo per leggere il file, e quindi usare split per spezzare il file su stringhe di caratteri stampabili, e quindi usare un blocco per determinare i set di dati di cui ho bisogno. – ndw
Consiglierei di leggere http://stackoverflow.com/questions/25189262/why-is-slurping-a-file-bad. –