Errno :: ENOENT (Keine solche Datei oder Verzeichnis @ rb_sysopen

8

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?

    
ashwintastic 01.04.2016, 07:22
quelle

2 Antworten

13

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.

%Vor%     
mudasobwa 01.04.2016, 07:26
quelle
18

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 ()?

    
Day Davis Waterbury 16.11.2016 22:42
quelle

Tags und Links