Pensemos en las siguientes situaciones:¶
¿Qué hacemos si queremos:
- agregar nuevos datos a los datos ya existentes?;
- modificar el puntaje de un jugador específico en un juego?;
- agregar una nueva pregunta la banco de preguntas del juego de repaso?;
- incrementar los Python Plus de un estudiante determinado?
¿Qué tienen todas estas situaciones en común?
Acceso aleatorio¶
- Si el valor desde_donde no está, se asume 0.
- Si el archivo es de texto, solamente se considera desplazar desde el comienzo del archivo, es decir el valor desde_donde es 0.
Veamos el siguiente ejemplo¶
In [1]:
Copied!
archivo = open("ejemplos/clase4/imagine.txt","rb")
archivo.seek(-18, 2) #Esto da error si el archivo se abre en modo"r"
print(archivo.read().decode('UTF-8'))
print("*"*30)
archivo.seek(0, 0)
print(archivo.read().decode('UTF-8'))
archivo.close()
archivo = open("ejemplos/clase4/imagine.txt","rb")
archivo.seek(-18, 2) #Esto da error si el archivo se abre en modo"r"
print(archivo.read().decode('UTF-8'))
print("*"*30)
archivo.seek(0, 0)
print(archivo.read().decode('UTF-8'))
archivo.close()
ivin' for today. ****************************** Imagine there's no heaven It's easy if you try No hell below us Above us, only sky Imagine all the people Livin' for today.
In [2]:
Copied!
archivo = open("ejemplos/clase4/imagine.txt","rb+")
archivo.seek(34, 0) #Esto da error si el archivo se abre en modo"r"
archivo.write(bytes("xXXXXXXXXXXXXXXXX", 'UTF-8'))
archivo.close()
archivo = open("ejemplos/clase4/imagine.txt","rb+")
archivo.seek(34, 0) #Esto da error si el archivo se abre en modo"r"
archivo.write(bytes("xXXXXXXXXXXXXXXXX", 'UTF-8'))
archivo.close()
- ¿Por qué convierto a bytes?
In [4]:
Copied!
archivo = open("ejemplos/clase4/imagine.txt","rb")
print(archivo.read().decode('UTF-8'))
archivo.close()
archivo = open("ejemplos/clase4/imagine.txt","rb")
print(archivo.read().decode('UTF-8'))
archivo.close()
Imagine there's no heaven It's easxXXXXXXXXXXXXXXXXell below us Above us, only sky Imagine all the people Livin' for today.
- Probemos esto mismo abriendo trabajando con archivos de texto.
- ¿archi.read(4).decode('UTF-8')?
¿Dónde estamos?¶
- tell(): retorna la posición actual.
In [5]:
Copied!
archivo = open("ejemplos/clase4/imagine.txt","rb")
archivo.seek(0,2)
print(archivo.tell())
archivo.close()
archivo = open("ejemplos/clase4/imagine.txt","rb")
archivo.seek(0,2)
print(archivo.tell())
archivo.close()
125
Entrada y salida estándar¶
- Tres archivos estándares: stdin, stdout, stderr.
- Usados por el intérprete como entrada, salida y error estándar.
- Se los accede a través del módulo sys.
In [108]:
Copied!
import sys
sys.stdout.write("Hola \n\n que tal")
import sys
sys.stdout.write("Hola \n\n que tal")
Hola que tal
In [ ]:
Copied!
nombre = input()
nombre = input()
In [ ]:
Copied!
import sys
nombre = sys.stdin.readline()
nombre
import sys
nombre = sys.stdin.readline()
nombre
Retomamos los módulos estándares¶
Módulo OS¶
Incluye funciones para:
- Procesamiento de archivos.
- Directorios.
- Permisos.
- Más info: http://docs.python.org/library/os.html#module-os
In [110]:
Copied!
import os
#os.rename('ejemplos/clase5/imagine.txt','ejemplos/clase5/COPIA.TXT')
os.remove('bandas.dat')
import os
#os.rename('ejemplos/clase5/imagine.txt','ejemplos/clase5/COPIA.TXT')
os.remove('bandas.dat')
Veamos estos otros ejemplos
In [111]:
Copied!
lista = os.listdir("/home/claudia/git/")
print(lista)
print(os.sep)
lista = os.listdir("/home/claudia/git/")
print(lista)
print(os.sep)
['listado', 'postitulo', 'Python', 'libro-python', 'www', 'proyecto2014', 'test', 'papers', 'descarga.jpeg'] /
In [112]:
Copied!
import os
print(os.access("/home/claudia/git/", os.W_OK))
import os
print(os.access("/home/claudia/git/", os.W_OK))
True
Módulo os.path¶
- Provee algunas funciones útiles: exists(), isdir(), isfile()
In [114]:
Copied!
import os.path
print(os.path.exists("/home/claudia/git/"))
print(os.path.isdir("/home/claudia/git/"))
import os.path
print(os.path.exists("/home/claudia/git/"))
print(os.path.isdir("/home/claudia/git/"))
True True