Anuncios Google

[Mini-Tutorial] Módulo IO

Bueno, pues me he decidido a hacer este tutorial debido a las dudas de ayer que conseguí solucionar gracias a Rober y markef. Entonces, me dije: ¿Qué tal si hago un tutorial para los que tenían dudas como yo?. Bueno aquí está.

¿Qué es el módulo IO?

El módulo IO permite manejar archivos de texto a tu placer. Es un módulo bastante interesante, pero que últimamente ha caído debido a la preferencia de manejar archivos INI con el módulo INI.

¿Funciona para LuaDev?

Sí. Pero lo mejor es que también funciona para el resto, como LuaHM7, HMv2, Lua normal, etc. Esto es debido a que el módulo casi no ha variado en cada tipo de Lua (Creo que en Phoenix Game Engine no funciona, pero corríganme).

Entonces, ¿cómo se lee un archivo con este módulo?

Para  abrir archivos vamos a utilizar hasta 3 funciones, que son:

  • io.open
  • io.read
  • io.close

La primera y la tercera son obligatorias para todo: leer, escribir, etc

Se haría así:

TXT = io.open("Tutorial.txt")
Tutorial = TXT:read()
TXT:close()
 
blanco = color.new(255,255,255)
 
while (1) do
screen.print(1,10,Tutorial,blanco)
screen.flip()
end

Cómo hemos visto hay que seguir tres pasos: Abrir, leer y cerrar. Fácil, ¿no?

Una característica también interesante de io.read es que podemos poner el número de caracteres que queremos que lea, así:

TXT = io.open("Tutorial.txt")
TXT:read(4)
TXT:close()

Así sólo leería 4 caracteres del archivo.

Vale, ya lo he entendido. ¿Y escribir?

Pues casi igual de fácil, sólo que sería abrir, escribir, guardar y cerrar. Algo así:

TXT = io.open("Tutorial.txt","w") ---La w, es para ponerte en modo escritura, sino pones nada es modo lectura.
TXT:write("Hola, esta cosa de m.rr funciona")
TXT:flush() --Función de guardar
TXT:close() 

 

Pues hasta aquí está lo básico, leer y escribir. Espero no ver ningún post preguntando por este módulo ;)

Cualquier duda, aquí estoy.

¿Cómo puedo saber más?

Puedes visitar las siguientes páginas:

http://pipagerardo.fortunecity.es/Tutorial_LUA_PSP_pipagerar...

o también

Lua 5.1, el link de Nekerafa


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Andres_Ne

Ey mrr deberiasa completar el

Ey mrr deberias  completar el tuto, como ya sabes hay mas funciones sobre este modulo y muchos de nosotros nos gustaria manejar el modulo IO ,ademas seria un aporte grandioso,Saludos amigos...


 

 

Imagen de User170294

pipagerardo

Te recomiendo que te pases por el tutorial de LUA de pipagerardo en el que explica TODO sobre el módulo IO ;)

Imagen de Andres_Ne

Pero el link que mrr dió me

Pero el link que mrr dió me manda a otro lado.

Imagen de User170294

Google

Google...

Imagen de Andres_Ne

como se supone que entre

Imagen de User170294

Pues eso...

https://www.google.es/#hl=es&output=search&sclient=psy-ab&q=tutorial+lua+pipagerardo&oq=tutorial+lua+pipagerardo&aq=f&aqi=g-sK1&aql=&gs_l=hp.3..0i10i30.683.5169.0.5498.24.20.0.4.4.0.231.3514.0j16j4.20.0...0.0.y_pAE8rimgk&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=dbfabe1817fd7705&biw=1218&bih=712

Saludos.

PD: hay algún tipo de problema con el host....


Imagen de m.rr

Me suena que dejó de pagar el

Me suena que dejó de pagar el host y se lo cerraron o algo así, aunque no me hagas mucho caso xD, y la única forma era con la cache creo que era de Google y de la página web.

Saludos, Tooxico xD

Imagen de Andres_Ne

Ok,pero ya qur no tenemos

Ok,pero ya que no tenemos dichos tutos deberias hacerlos tu (claro,si quieres.xD), a mi me caeria de pelos un tuto de eso.

 

PD:Deberias darte una vuelta por msn,saludos.


 

 

Imagen de m.rr

Okk, lo continuaré. Ya lo voy

Okk, lo continuaré. Ya lo voy ampliando.

P.D: Si la vuellta la doy xD pero no encuentro a nadie

Imagen de NEKERAFA

Tengo la solución!

Resulta que antes, cuando programaba en HM, para evitar tener que estar cada dos por tres con el navegador, lo que hice fue copiar el tutorial en un archivo de texto, así, cuando estaba fuera de casa podría seguir programando.
Si queréis, abro un tema nuevo con todo el tutorial de pipagerardo, aunque ahora que me acuerdo... creo que Lua HM 7 venia con el tutorial...


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Andres_Ne

Seria bueno ;)

Seria bueno ;)

Imagen de Andres_Ne

Pero al escribir se borraria

Pero al escribir se borraria lo que ya tenia ese TXT verdad? como lo evito por ejemplo que aparesca al lado o abajo de el  texto?

 

TXT = io.open("Bye.txt","w") ---La w, es para ponerte en modo escritura, sino pones nada es modo lectura.
TXT:write("Hola, esta cosa de m.rr funciona")
TXT:flush() --Función de guardar
TXT:close() 
 
while true do 
	controls.read()
	screen.print(10,10,"Hola Scnebe")
 
	if controls.select() then 
			llamar() 
	end
	screen.flip()
end

"Bye" que contiene "xD xD xD xD" y que al hacer el code de arriba no  se borre y escriba esto "Hola Scene",sino que haga esto "xD xD xD Hola Scene".   Saludos


 

 

Para preservar los datos, no

Para preservar los datos, no abras el archivo con "w", ábrelo con "r+" o "a+" y listo, no perderás nada ("r+" te deja el puntero al inicio del archivo, es decir, lo que escribas quedará antes que el contenido original del archivo. "a+" deja el puntero al final).

Imagen de Andres_Ne

Ok,gracias rober ;) por

Ok,gracias rober ;) por cierto  por ahi habia un tuto donde decia todo estode W,A,R pero se me ah perdido.. Saludos

Si, en la documentación de

Si, en la documentación de Lua o en la oficial de LuaDEV.

...

¿Donde has definido la función "llamar()"?

Imagen de AdriGV

Dovemac

Andres usa llamar() en ves de poner broke(), tiene esa costumbre xD

Saludos

Imagen de Andres_Ne

Jejejejejjejejej zeee ;)

Jejejejejjejejej zeee ;)

Imagen de Andres_Ne

Solo es para provocar error y

Solo es para provocar error y no tener que salir y darle conexion usb ;)

Imagen de HappyFlowerPP

Pero ...

como se lee una linea concreta?¿

Imagen de m.rr

TXT


Cada read() es una línea.

TXT = io.open("TEXTO.TXT","r")

Línea1 = TXT:read()

Linea2 = TXT:read()

Saludos

Entonces

Entonces hay que usarlo en un bucle for ¿no?

 

TXT = io.open("TEXTO.TXT","r")
tabla = {}
for i=1, TXT:lines do
tabla[i] = TXT:read
end

 

Funcionaría?

Imagen de m.rr

TXT =

TXT = io.open("TEXTO.TXT","r")
tabla = {}
for i=1, TXT:lines() do
tabla[i] = TXT:read
end

En teoría sí pero creo que fallaría por que hay que poner pparéntesis a lines y read

Huy...

No conte con lo parentesis...

 

Una cosa, ¿que tendría de diferente el codigo de arriba con este?

 

y = 10
archivo = io.open("miarchivo.txt","r")
 
for linea in archivo:lines() do
y = y + 10
screen.print(100,y,linea)
end
 
archivo:close()

Imagen de HappyFlowerPP

muchas gracias

pues eso

Imagen de Andres_Ne

Gracias mrr me sirvio de

Gracias mrr me sirvio de mucho al principio editaba sin queres el txt pero luego ya lo domine..xD Gracias compañero y pasate por el msn. ;)


 

 

Imagen de Andres_Ne

No me ah quedado claro lo de

No me ah quedado claro lo de escribir ,podrias prfavor ponernos un ejemplo?(para escribir),gracias mrr

esta chiido el tuto..xD

Imagen de m.rr

Anda, andrés!! Hace un montón

Anda, andrés!! Hace un montón que no te encuentro ehh xD

Toma:

TXT = io.open("Tutorial.txt","w") ---La w, es para ponerte en modo escritura, sino pones nada es modo lectura.
TXT:write("Hola, esta cosa de m.rr funciona")
TXT:flush() --Función de guardar
TXT:close() 

Imagen de NEKERAFA

Mmm...

Ahora que me acuerdo, no se si os acordareis de los tutoriales de Elender, pero aí explica todo esto y más (Es donde aprendí a utilizar los archovos XD):

http://psp.scenebeta.com/tutorial/8-lectura-y-escritura-de-f...

Un saludo ^-^.


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de Jairo David

Muchas gracias

Muchas gracias estaba buscando esto desde hace tiempo, ahora me queda aprender como leer todas las lineas ;)

Un Saludo!

Fácil

--Para leer todo de golpe (todo el contenido del archivo en la misma variable)
file = io.open("archivo")
todo = file:read("*a")
 
--Forma más controlada, leyendo línea por línea y guardando cada una como entrada en una tabla:
lineas = {}  --Tabla vacía, para recibir los datos
for line in io.lines("archivo") do 
  table.insert(lineas, line) 
end
--Para usar este método NO es necesario abrir antes el archivo

Depende lo que quieras lograr, pero personalmente prefiero la 2da forma cuando se trata de editar el contenido del archivo para después escribirlo de nuevo.

Imagen de Jairo David

Entonces quedaria

Entonces quedaria así ¿?

TXT = io.open("archivo.txt")
todo = TXT:read("*a")
TXT:close()
 
blanco = color.new(255,255,255)
 
while (1) do
screen.print(1,10,todo,blanco)
screen.flip()
end
 asi es como se podría leer todas las lineas de un archivo¿¿??. Esperando respuestas :D

Un Saludo!

Creo que esto tambien funcionaría

Prueba con esto, creo que tambien funciona:

TXT = io.open("archivo.txt")
TXT:close()
 
blanco = color.new(255,255,255)
y = 10
while (1) do
for line in TXT:lines() do
linea = TXT:read()
y = y + 10
screen.print(1,y,linea,blanco)
end
 
screen.flip()
end

 

Saludos!

Imagen de Andres_Ne

No,da error en la linea 7.

No,da error en la linea 7.

Ya me di cuenta del error

Ya me di cuenta del error, creo que esta solucionado

 

TXT = io.open("archivo.txt")
TXT:close()
 
blanco = color.new(255,255,255)
y = 10
while (1) do
for i=1,TXT:lines() do
linea = TXT:read()
y = y + 10
screen.print(1,y,linea,blanco)
end
 
screen.flip()
end

 

Una cosa ¿Que error te daba?

 

Saludos!

Imagen de m.rr

Si, asi es

Si, asi es

Imagen de Jairo David

Pues

Pues genial lee todas las lineas pero ahora me gustaria saber como hacer que la linea no se salga de la pantalla, hace tiempo vi como hacerlo pero no me acuerdo donde lo vi

Imagen de m.rr

Con string.len()

Con string.len()

Tengo preguntas...

Que es lo que contendría el archivo txt en su interior y que se podría leer/escribir en él??

Imagen de m.rr

Puedes escribir lo que

Puedes escribir lo que quieras y leer lo que quieras ;)

En mi opinión es mejor el .txt que los .ini

Saludos

Imagen de AitorDB

By Aitor

En teoria podrias guardar un texto cualquiera, por ejemplo la letra de una cancion o usarlo como si se tratara de un ini...

¡Gracias!

No había usado este modulo antes porque no tenía ni idea de usarlo, pero ahora que lo comprendo creo que trastearé esto para varias cosas que tengo en mente...

Buen tutorial.

Un saludo.


 

 

Imagen de m.rr

De nada, espero que te sirva

De nada, espero que te sirva para iThunder ;)

Imagen de AitorDB

By Aitor

Gracias por el tuto m.rr me viene de perlas ;)

Imagen de m.rr

De nada ;)

De nada ;)

Imagen de User170294

En mi opinión, el mejor modo

En mi opinión, el mejor modo de aprender a usar las funciones del módulo "io" es leyendo toda la información que aparece sobre este en el tutorial de lua escrito por pipagerardo y que podeís encontrar facilmente en Google. Además de ser el tutorial sobre Lua más interesante que he encontrado en la web.


Imagen de m.rr

Gracias Nekerafa :)

Gracias Nekerafa :)

Imagen de NEKERAFA

A ver...

Ese es el manual oficial de Lua, el cual siempre lo visito cuando tengo dudas.

Tengo que decir que pipagerardo se basó en el en las funciones básicas, ya que las explican igual.


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de User170294

Como te dicen más abajo hay

Como te dicen más abajo hay más funciones aparte de leer y escribir. No estaría de más que hicieras un tutorial más documentado y y profundo.

Saludos m.rr.


Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.