Ich möchte etwas in eine Datei schreiben.
%Vor% Wenn dieser Code ausgeführt wird, erhalte ich diesen Fehler. Ich weiß, dass dieser Ordner nicht existiert, aber File.open
mit w
mode erstellt eine neue Datei, wenn sie nicht existiert.
Warum funktioniert das nicht?
File.open(..., 'w')
erstellt eine Datei, wenn sie nicht existiert. Niemand hat versprochen, dass es einen Verzeichnisbaum dafür erstellen wird.
Eine andere Sache, sollte File#join
verwendet werden, um zu bauen Verzeichnispfad statt dummer Zeichenkettenverknüpfung.
Versuchen Sie gets
in einer Rake-Aufgabe zu verwenden? Möglicherweise sehen Sie diese Fehlermeldung:
Errno :: ENOENT: Keine solche Datei oder Verzeichnis @ rb_sysopen
Haben Sie versucht, den Fehler zu suchen und auf dieser Seite gelandet? Diese Antwort ist nicht für das OP, sondern für Sie.
Verwenden Sie STDIN.gets
. Problem gelöst. Das liegt daran, dass nur die Verwendung von gets
wieder in $stdin.gets
aufgelöst wird und Rake die globale Variable überschreibt, so dass gets
versucht, eine Dateikennung zu öffnen, die nicht existiert. Hier ist warum:
Was ist der Unterschied zwischen gets.chomp () vs. STDIN.gets.chomp ()?