# Ejemplo Ficheros o Archivos. Práctica 7.

## Ficheros de Texto

Nociones básicas y ejemplo

## Pasos a seguir:

Para trabajar con archivos:

1. Se abre el archivo.
2. Se lee o se escribe en el archivo.
3. Se cierra el archivo.

## Paso 1. Abrir

### Sintaxis

nombre = open(\<ruta del archivo>, \<modo>)

Donde:

* ruta del archivo, es tipo str que indica el directorio donde está el archivo.
* modo es tipo str que indica cómo se accede al archivo (tipos de acceso).

### Tipo de acceso

Si no se indica el tipo de operación el archivo se abrirá en modo de lectura.

* **r\\' es el modo de lectura.**
* **\\'w\\' es un modo de escritura. En caso de existir un archivo, éste es sobrescribe.**
* **\\'a\\' es un modo de escritura. En caso de existir un archivo, comienza a escribir al final de éste.**
* \\'x\\' es un modo de escritura para crear un nuevo archivo. En caso de que el archivo exista se emitirá un error de tipo FileExistsError.
* \\'+\\' es un modo de escritura/lectura

## Paso 2. Leer o escribir el archivo

### Paso 2. Leer

* `archivo.readline(`). Lee línea a línea. Leerá el texto desde la posición en que se localice hasta encontrar el caracter de escape retorno de línea (\n).
* `archivo.read()`. Todo el archivo.

### Paso 2. Escribir un archivo

*`archivo.write()`.*

## Paso 2. Leer o escribir el archivo

*`archivo.close()`.*

## Enunciado

Introducir las *notas del primer y segundo parcial de los alumnos* de la asignatura Informática para ingeniería. Para ello, previamente le preguntará al usuario cuantos alumnos va a introducir. Estos datos se almacenarán en un archivo.

## Análisis:

* Preguntar al usuario cuantos alumnos va a introducir (verificar que sea mayor que 0 y menor 90).
* Pedir las calificaciones de cada uno de los alumnos sus calificaciones (deben ser que cero y menor que 10).
* Almacenar la información en el archivo.

#### Diagrama

![](https://156834076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3CsDMenpAVuNy6kou5%2F-M3zmlYqQRU90ajlY9iX%2F-M3znuFToW-aoGsMXOp7%2Fanalisi_alumno.jpg?alt=media\&token=23ee9b3b-b846-46af-9d3c-0ee2d023897a)

###

{% hint style="info" %}
*OJO, Suponemos que el usuario al introducir las notas y el nombre no se equivoca*
{% endhint %}

### Código crear el archivo

```
print("Almacena notas")
#Abrir el archivo el archivo
archivo=open("datos.txt","a")
#Cuantos datos vas a introducir
cuantos_alumnos_introducir=int(input("Dame el número de alumnos a introducir?"))
# Pedir las valores y los almaceno
for i in range(cuantos_alumnos_introducir):                               
    nombre=input("Dame el nombre")
    archivo.write(nombre+";")
    nota=float(input("Dame la nota 1"))
    nota1=float(input("Dame la nota2"))
    #almacena la información en el archivo, separándola por ;en el archivo
    texto=str(nota)+";"+str(nota1)+"\n"
    archivo.write(texto)
#Cierro el archivo
archivo.close()
print("Fin de programa")
```

### Archivo Resultado

{% file src="<https://156834076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3CsDMenpAVuNy6kou5%2F-M4TLLcILXAzdPQIoBYI%2F-M4TMNfLQKO5khDojwHK%2Fdatos.txt?alt=media&token=5fce04b4-9f05-442c-bd3a-2eeebd77ad16>" %}

### Código leer archivo (read)

```python
#Abrir el archivo
archivo=open("datos.txt","r")
#Visualizo los datos del archivo
print(archivo.read())
archivo.close()
```

### Código leer archivo (readlines)

```
#abro el archivo
archivo=open("datos.txt","r")
linea=1
#leo el archivo linea a linea y visualizo
for lineas in archivo.readlines():
    print("numero", linea, "  ", lineas)
    linea+=1
archivo.close()
```

## Evitar errores&#x20;

Evita que el programa rompa, pero no se sabe cuál es el error

```python
try: 
    archivo=open("datos.txt","r")
except:
    print("Se ha generado un error")
```

## Error: Verificar si existe un archivo

No se puede añadir datos, ni leer un archivo que no existe. Para evitar un error, se debe importar el ***`módulo os`*** ***y verificar que el archivo exista,****&#x20;****`os.path.exists`\*\*\*\*.***

```python
import os
nombre_del_archivo="archivo.txt"
if os.path.exists(nombre_del_archivo):
    print("Existe el archivo")
else:
    print("El archivo no existe")
```

## Error: Problemas con el directorio  de trabajo

Se debe importar el modulo os, utilizando la ***`import os, os.getcwd().`***

```python
nombre="ejemplo"
archivo=os.getcwd()+ "/" + nombre + ".txt"
```

{% hint style="info" %}
**Importante:**

Si el archivo existe, añade datos:

&#x20;     *archivo=open("datos.txt","a")*

Si se utiliza w, si existe el archivo, lo borra e introduce una nueva.

&#x20;  *archivo=open("datos.txt","w")*
{% endhint %}

## Probarlo

{% embed url="<https://colab.research.google.com/drive/1sqS-s1u4LXlOR_Oy7-Pi0IyxvSRjUa3t>" %}
