Gibt es in Ruby eine eingebaute Funktion, um die ganze Datei ohne eine Schleife zu lesen? Bisher bin ich nur auf Methoden gestoßen, die Chunks (Zeile oder Zeichen) lesen.Wie liest man ganze Dateien in Ruby?
Antwort
IO.read("filename")
oder
File.read("filename")
Docs: http://ruby-doc.org/core/classes/IO.html – quantumSoup
Nur aus Neugier, warum kann ich diese Funktion hier nicht finden: http://www.ruby-doc.org/core- 2.1.2/File.html –
@MartinKonecny weil 'File :: read' eigentlich von' IO :: read' geerbt wird - beide sind genau gleich, weil 'File'' IO' erweitert. –
File.readlines("filename")
Dies ist auch eine gute Methode, alles aus einer Datei und bricht Split auf Zeilenumbrüche zu lesen. Die Rückgabe ist ein Array mit einer Zeile pro Element.
Genauer gesagt, 'readlines' teilt sich in die interne Variable' $/', die standardmäßig auf" \ n "steht. Sie können jedoch '$ /' vorübergehend zurücksetzen und Dateien auch in anderen Bereichen lesen. – Telemachus
Bitte ignorieren Sie den Hinweis, der besagt "Sie sollten nie schlürfen (was der nervige Begriff dafür ist) eine Datei". Manchmal ist das eine sehr nützliche und sinnvolle Sache.
Angenommen, Sie lesen eine Datei wiederholt: gute Chance, dass das Lesen der Datei in ein Array eine sinnvolle Optimierung gegenüber dem Lesen der Datei Zeile für Zeile ist, auch wenn die o/s die Datei zwischenspeichern.
Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag - du kannst deine eigenen Beiträge jederzeit kommentieren, und sobald du genügend [Reputation] (http://stackoverflow.com/help/whats-reputation) hast, wirst du das tun in der Lage sein [jeden Beitrag kommentieren] (http://stackoverflow.com/help/privileges/comment). - [Aus Bewertung] (/ review/low-quality-posts/10916920) – ndn
Sorry, aber einfach nicht daran interessiert, einen Vertreter zu erarbeiten. Der Tipp "nicht schlürfen" ist einfach falsch. Es ist manchmal eine nützliche Technik (ich habe gerade die Laufzeit eines Programms um den Faktor 1000 reduziert, indem ich die ganze Datei gelesen habe) und sollte nicht veraltet sein. –
Das Lesen einer Datei in einem Arbeitsgang (slurping) ist nicht schneller als Zeile für Zeile, sobald eine Datei 1MB + groß ist. Darüber hinaus können Sie Zeilen für Zeile schneller lesen und potenzielle Skalierbarkeitsprobleme vermeiden. "einfach falsch" ist nicht hilfreich, ohne zu erklären, wann es angemessen ist. Weitere Informationen finden Sie unter http://stackoverflow.com/questions/25189262/why-is-slurping-a-file-bad. –
- 1. Wie man Dropzone Dateien liest
- 2. Wie liest man Dateien asynchron in C++?
- 3. Wie liest man eine ganze Zahl in Exponentialform mit Haskell?
- 4. Batch-Dateien: Wie liest man eine Datei?
- 5. Wie liest man ganze Zeile (String) mit fscanf?
- 6. Wie liest man CSV-Dateien in Matlab wie in R?
- 7. Python liest keine ganze Textdatei
- 8. In Ruby, Wie liest man UTF-8 aus einem Sockel?
- 9. Ruby Programm liest nicht alle Zeilen in Dateien
- 10. Ganze Dateien in Lua lesen
- 11. Wie liest man mehrere .txt-Dateien in R?
- 12. Wie liest man Dateien aus dem Ressourcenordner in Scala?
- 13. Wie liest man bestimmte Dateien in Mule mit MEL?
- 14. Wie man JSON von Ruby on Rails mit ExtJS liest
- 15. HttpURLConnection liest nicht die ganze Antwort
- 16. Wie liest man XMI?
- 17. Wie liest man Dateien mit verschiedenen Kodierungen mit Awk?
- 18. Wie liest man UTF-8-Dateien mit Pandas?
- 19. Wie liest man CSV von ARGF
- 20. Wie liest man Zeilen aus mehreren Dateien mit bash?
- 21. Wie liest man die Bildschirmpixel?
- 22. Asc Dateien und Matlab: Wie man die Koordinaten liest
- 23. Wie liest man Kommentarblöcke in PHP?
- 24. ruby each_line liest auch Zeilenumbruch?
- 25. Ruby - wie man die ersten n Zeilen aus der Datei in das Array liest
- 26. Wie liest man eine ganze Zahl gefolgt von einer Zeichenkette in C?
- 27. Wie liest man CPAN Changelogs?
- 28. Wie liest man Python-Bytecode?
- 29. Wie man Daten von NSDocumentDirectory liest
- 30. Gulp: Wie man Ordnername liest?
Für was es wert ist, das ist etwas, was Menschen oft wollen, aber nicht wirklich brauchen. (Und wenn die Datei sehr groß ist, kann es zu einer unangenehmen Überraschung kommen, wenn Dateien in der Nähe Ihres gesamten verfügbaren Speicherplatzes verschlingen.) Was versuchen Sie letztendlich zu erreichen? – Telemachus
Ich fand dies sehr hilfreich für die Arbeit mit einer Datei, die nicht im täglichen Format war. Ich las eine Datei in IBM437-Codierung und musste die Datei bei den komischen Zeichen zerlegen, um die wertvollen Daten von den Dingen zu trennen, die ich nicht brauchte. Dazu hat es Sinn gemacht, die gesamte Datei zu lesen und dann eigene Zeilenumbrüche dort zu erstellen, wo sie sein sollten. Sonst würde ich jede Zeile oder jeden Charakter weitergeben. Stattdessen könnte ich das einfach verwenden, um die Datei zu lesen, und dann die Datei durch Teilen in Zeilen mit druckbaren Zeichen aufteilen und dann einen Block verwenden, um die benötigten Datenmengen zu bestimmen. – ndw
Ich würde empfehlen http://StackOverflow.com/questions/25189262/why-is-slurping-a-file-bad zu lesen. –