txt todas por lineas leer las gestion formas extraer exportar datos con columnas archivos archivo string file go readfile

string - todas - leer lineas de archivo txt python



¿Cómo puedo leer un archivo completo en una variable de cadena en Golang? (4)

Tengo muchos archivos pequeños, no quiero leerlos línea por línea.

¿Hay alguna función en Golang que me permita leer todo un archivo en una variable de cadena?


Así es como lo hice:

package main import ( "fmt" "os" "bytes" ) fun main() { filerc, err := os.Open("filename") if err != nil{ log.Fatal(err) } defer filerc.Close() buf := new(bytes.Buffer) buf.ReadFrom(filerc) contents := buf.String() fmt.Print(contents) }


Creo que lo mejor que puede hacer, si realmente está preocupado por la eficacia de concatenar todos estos archivos, es copiarlos a todos en el mismo búfer de bytes.

buf := bytes.NewBuffer(nil) for _, filename := range filenames { f, _ := os.Open(filename) // Error handling elided for brevity. io.Copy(buf, f) // Error handling elided for brevity. f.Close() } s := string(buf.Bytes())

Esto abre cada archivo, copia su contenido en buf, luego cierra el archivo. Dependiendo de su situación, es probable que no necesite convertirla, la última línea es solo para mostrar que buf.Bytes () tiene los datos que está buscando.


Si solo quiere el contenido como una string , entonces la solución simple es usar la función ReadFile del paquete io/ioutil . Esta función devuelve una porción de bytes que puede convertir fácilmente en una string .

package main import ( "fmt" "io/ioutil" ) func main() { b, err := ioutil.ReadFile("file.txt") // just pass the file name if err != nil { fmt.Print(err) } fmt.Println(b) // print the content as ''bytes'' str := string(b) // convert content to a ''string'' fmt.Println(str) // print the content as a ''string'' }


Use ioutil.ReadFile :

func ReadFile(filename string) ([]byte, error)

ReadFile lee el archivo nombrado por nombre de archivo y devuelve el contenido. Una llamada exitosa devuelve err == nil, no err == EOF. Debido a que ReadFile lee el archivo completo, no trata un EOF de Read como un error que se informará.

Obtendrá un []byte lugar de una string . Se puede convertir si es realmente necesario:

s := string(buf)