crear cadenas archivo ruby file io errno

cadenas - Cómo crear un archivo en Ruby



cadenas ruby (7)

OK, ahora me siento estúpido. Los dos primeros definitivamente no funcionan, pero los otros dos sí. No estoy seguro de cómo me convencí de que los había probado. Perdón por perder el tiempo de todos.

En caso de que esto ayude a alguien más, esto puede ocurrir cuando intenta hacer un nuevo archivo en un directorio que no existe.

Intento crear un nuevo archivo y las cosas no parecen funcionar como yo también las espero. Esto es lo que he intentado:

File.new "out.txt" File.open "out.txt" File.new "out.txt","w" File.open "out.txt","w"

De acuerdo con todo lo que he leído en línea, todos estos deberían funcionar, pero cada uno de ellos me da esto:

ERRNO::ENOENT: No such file or directory - out.txt

Esto ocurre desde el IRB y desde un archivo ruby. ¿Qué me estoy perdiendo?


El directorio no existe. Asegúrese de que exista como open , no creará esos directorios para usted.

Me encontré con esto hace un tiempo.


Intenta usar w+ como modo de escritura en lugar de solo w :

File.open("out.txt", "w+") { |file| file.write("boo!") }


También puede usar constantes en lugar de cadenas para especificar el modo que desea. El beneficio es si crea un error tipográfico en un nombre constante, su programa generará una excepción de tiempo de ejecución.

Las constantes son File::RDONLY o File::WRONLY o File::CREAT . También puedes combinarlos si quieres.

Descripción completa de modos abiertos de archivos en ruby-doc.org


Tratar

File.open("out.txt", "w") do |f| f.write(data_you_want_to_write) end

sin usar el

File.new "out.txt"


Utilizar:

File.open("out.txt", [your-option-string]) {|f| f.write("write your stuff here") }

donde están tus opciones:

  • r - Solo lectura. El archivo debe existir.
  • w - Crea un archivo vacío para escribir.
  • a - Agregar a un archivo. El archivo se crea si no existe.
  • r+ - Abre un archivo para actualizar tanto la lectura como la escritura. El archivo debe existir.
  • w+ - Crea un archivo vacío para leer y escribir.
  • a+ - Abre un archivo para leer y anexar. El archivo se crea si no existe.

En tu caso, ''w'' es preferible.

O podrías tener:

out_file = File.new("out.txt", "w") #... out_file.puts("write your stuff here") #... out_file.close


File.new y File.open predeterminan el modo de lectura ( ''r'' ) como un mecanismo de seguridad, para evitar posiblemente sobreescribir un archivo. Tenemos que decirle explícitamente a Ruby que use el modo de escritura ( ''w'' es la forma más común) si vamos a generar el archivo.

Si el texto que se va a enviar es una cadena, en lugar de escribir:

File.open(''foo.txt'', ''w'') { |fo| fo.puts "bar" }

o peor:

fo = File.open(''foo.txt'', ''w'') fo.puts "bar" fo.close

Use la write más sucinta

File.write(''foo.txt'', ''bar'')

write tiene modos permitidos para que podamos usar ''w'' , ''a'' , ''r+'' si es necesario.

open con un bloque es útil si tiene que calcular el resultado en un bucle iterativo y desea dejar el archivo abierto mientras lo hace. write es útil si va a generar el contenido de una vez y luego cierra el archivo.

Consulte la documentación para más información.