it-swarm.com.de

Wie schreibe ich in Ruby in eine Datei?

Ich muss die Daten aus der Datenbank lesen und sie dann in einer Textdatei speichern.

Wie kann ich das in Ruby machen? Gibt es ein Dateiverwaltungssystem in Ruby?

545
ohana

Die Ruby Dateiklasse gibt Ihnen die Vor- und Nachteile von ::new und ::open, aber die übergeordnete, die E/A-Klasse , vertieft sich in #read und #write.

172
jdl

Suchen Sie folgendes?

File.open(yourfile, 'w') { |file| file.write("your text") }
895
Todd R

Sie können die Kurzversion verwenden:

File.write('/path/to/file', 'Some glorious content')

Es gibt die geschriebene Länge zurück; Weitere Details und Optionen finden Sie unter :: write .

Verwenden Sie zum Anhängen an die Datei, falls diese bereits vorhanden ist:

File.write('/path/to/file', 'Some glorious content', mode: 'a')

Dies ist in den meisten Fällen der bevorzugte Ansatz:

 File.open(yourfile, 'w') { |file| file.write("your text") }

Wenn ein Block an File.open übergeben wird, wird das File-Objekt automatisch geschlossen, wenn der Block beendet wird.

Wenn Sie File.open keinen Block übergeben, müssen Sie sicherstellen, dass die Datei korrekt geschlossen und der Inhalt in die Datei geschrieben wurde.

begin
  file = File.open("/tmp/some_file", "w")
  file.write("your text") 
rescue IOError => e
  #some error occur, dir not writable etc.
ensure
  file.close unless file.nil?
end

Sie finden es in Dokumentation :

static VALUE rb_io_s_open(int argc, VALUE *argv, VALUE klass)
{
    VALUE io = rb_class_new_instance(argc, argv, klass);
    if (rb_block_given_p()) {
        return rb_ensure(rb_yield, io, io_close, io);
    }
    return io;
}
244
Tombart

Zambri s Antwort hier gefunden ist die beste.

File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }

wo deine Optionen für <OPTION> sind:

r - Nur lesbar. Die Datei muss existieren.

w - Erstellen Sie eine leere Datei zum Schreiben.

a - An eine Datei anhängen. Die Datei wird erstellt, wenn sie nicht vorhanden ist.

r+ - Öffnen Sie eine Datei zum Aktualisieren von Lese- und Schreibvorgängen. Die Datei muss existieren.

w+ - Erstellt eine leere Datei zum Lesen und Schreiben.

a+ - Öffnen Sie eine Datei zum Lesen und Anhängen. Die Datei wird erstellt, wenn sie nicht vorhanden ist.

In Ihrem Fall ist w vorzuziehen.

113
mvndaai

Für diejenigen von uns, die am Beispiel lernen ...

Schreiben Sie Text in eine Datei wie diese:

IO.write('/tmp/msg.txt', 'hi')

BONUS INFO ...

Lies es so zurück

IO.read('/tmp/msg.txt')

Häufig möchte ich eine Datei in meine Zwischenablage lesen ***

Clipboard.copy IO.read('/tmp/msg.txt')

Und manchmal möchte ich das, was sich in meiner Zwischenablage befindet, in eine Datei schreiben. ***

IO.write('/tmp/msg.txt', Clipboard.paste)

*** Angenommen, Sie haben das Zwischenablage-Juwel installiert

Siehe: https://rubygems.org/gems/clipboard

31
l3x

Um den vorherigen Inhalt der Datei zu zerstören, schreiben Sie eine neue Zeichenfolge in die Datei:

open('myfile.txt', 'w') { |f| f << "some text or data structures..." } 

So hängen Sie an eine Datei an, ohne deren alten Inhalt zu überschreiben:

open('myfile.txt', "a") { |f| f << 'I am appended string' } 
20
Marko Tunjic