No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Escribir en un archivo

36/44
Recursos

Aportes 50

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Veamos algunos de los modos más usados con los que un archivo puede ser abierto en Python:

r -> abre un archivo solo para lectura. El puntero al archivo esta localizado al comienzo del archivo. Este es el modo predeterminado de la función.
rb -> abre un archivo solo para lectura en formato binario. El puntero al archivo esta localizado al comienzo del archivo. Este es el modo predeterminado de la función.
r+ -> abre un archivo para escritura y lectura. El puntero del archivo está localizado al comienzo del archivo.
w -> abre un archivo solo para escritura. Sobreescribe el archivo si este ya existe. Si el archivo no existe, crea un nuevo archivo para escritura.
wb -> abre un archivo solo para escritura en formato binario. Sobreescribe el archivo si este ya existe. Si el archivo no existe, crea un nuevo archivo para escritura.
w+ -> abre un archivo para escritura y lectura. Sobreescribe el archivo si este ya existe. Si el archivo no existe, crea un nuevo archivo para escritura.
a -> abre un archivo para anexo. El puntero del archivo esta al final del archivo si este existe. Es decir, el archivo está en modo anexo. Si el archivo no existe, crea un nuevo archivo para escritura.

Usando ‘\n’

Para escribir una nueva línea por primera vez deberíamos de agregar el ‘\n’ en el principio de la cadena, no en el final ya que si no agregaríamos la cadena al final y después crearíamos el salto de línea

Si este es nuestro archivo de texto:

text.txt

linea1
linea2

Usando ‘\n’ al final

with open("text.txt", "r+) as file:
	file.write(''linea3 \n")

El archivo se vería así

text.txt

linea1
linea2linea3

Pero si ponemos ‘\n’ al principio

with open("text.txt", "r+) as file:
	file.write(''\nlinea3")

Se vería así

text.txt

inea1
linea2
linea3

ESCRIBIR TEXTOS EN PYTHON

Para poder escribir texto en python solo debemos agregar al parámetro open( ) algunas de las siguientes reglas:

Exception Description
“a” Agregar: se agregar texto al final del texto.
“w” Escribir: Sobre escribir cualquier contenido existente en el archivo texto.

Sintaxis.

Su sintaxis es un simple y fácil de usar, solo es necesario especificar el tipo de parámetro que queremos agregar a nuestro texto.

f = open('./text.txt') o file = open('./text.txt')

Veamos cómo aplicarlo a nuestro archivo texto.

f = open('./text.txt', "a")
f.write("nueva linea de texto1\n")
f.write("nueva linea de texto2\n")
f.write("nueva linea de texto3\n")
_Producción:_
nueva linea de texto1
nueva linea de texto2
nueva linea de texto3

Ahora y quizas este comando puede ser muy util como muy peligro ya que “w” lo que realiza es eliminar todo el texto y lo sobre escribir con lo que le vayamos a ingresar por eso es de cuidado!.

Veamos como se aplicaría.

f = open('./text.txt', "w")
f.write("Uppps!! hemos sobre escrito el texto con este nuevo\n")
f.close()
_Producción:_
Uppps!! hemos sobre escrito el texto con este nuevo

Gracias a Python existen mas comandos que podemos utilizar con la función open( ) las cuales explicare a continuación:

Exception Description
“r” Lectura: Abre por defecto un archivo para su lectura, genera error si este no existe.
“a” Agregar: se agregar texto al final del texto.
“w” Escribir: Sobre escribir cualquier contenido existente en el archivo texto.
“x” Crear: Crea un archivo en especifico, devuelve un error si este no es valido.
“t” texto: Valor por defecto, devuelve el resultado como tipo texto.
“b” Binario: Devuelve el valor de tipo binario (por ejemplo imágenes)

No es nada inasumible. Pero realmente creía que iba a ser un curso mucho más fácil.

Escribir en un archivo

#------- Escribir sobre un archivo ------------

# r para permiso de lectura
# w para permiso de escritura
# r+ para permisos tanto de lectura como de escritura. Enfocado en agregar
# nuevo contenido al contenido existente en el archivo
# w+ para permisos tanto de lectura como de escritura. Enfocado en reescribir
# el contenido existente

# leer archivo
with open('./text.txt', 'r+') as file:
  # leer archivo
  for line in file:
    print(line)

  # agregar nuevo contenido al existente
  file.write('\n')  # salto de linea
  file.write('una nueva linea\n')

# leer archivo
with open('./text.txt', 'w+') as file:
  # leer archivo
  for line in file:
    print(line)

  # sobreescribir sobre el contenido existente
  file.write('\n')  # salto de linea
  file.write('una nueva linea\n')

Comparto Otra forma de hacerlo , escribiendo al inicio de mi archivo con SEEK

with open('./text.txt','r+') as file:
  #presento  cada linea en una lista sin la necesidad de usar un for 
  print(file.readlines())
  #seek permite mover la posicion del puntero en el archivo 
  file.seek(0)
  #ahora escribo mis linea al inicio del archivo
  file.writelines('esta linea va al inicio de mi archivo\n')

falta poco para terminar el curso, sigue asi!

writelines()

writelines() es un método que permite escribir múltiples líneas a la vez.

new_text = ['\n', 'New line 1', 'New line 2', 'New line 3']

with open('./text.txt', 'r+') as file:
  file.writelines('\n'.join(new_text))
  
  for line in file:
    print(line)


Asi me quede al terminar la clase.
Pero siempre pienso despues que la practica mata al talento. Y aunque tenga que practicar mucho, es lo que toca.

Que buenas clases. No se si se pueda pero tocaría investigar mas, editar cierta Linea y no solo al final o sobre escribiendo.

Infinitas gracias llevo 10 horas in a raw learning y sabes que no pain hahahahha

Open(): Viene solo con permisos de lectura
El permiso de r+ permite escribir y leer el archivo
El permiso de w+ permite reescribir y leer el archivo

Con 'a+' lo que hace es editar el archivo al final del texto, si el archivo no existe lo crea directamente. He usado también seek(0) para volver a posición inicial y así poder iterar en el ciclo y leer le documento. ![](https://static.platzi.com/media/user_upload/python_ejemplo-14e3154e-98e9-4c34-b592-f4ac5340ec72.jpg)![](https://static.platzi.com/media/user_upload/python_ejemplo_2-fce6afb6-5f60-48b0-962d-38239a8bcdd4.jpg)
Por lo general uso el modificador `a+` así estoy seguro de que el archivo exista y sino, lo crea.

Mis notas de la clase 😃

Permiso de lectura pero no de escritura (marca error):

with open('./text.txt') as file:
  for line in file:
    print(line)
    file.write('nuevas cosas')

Permiso de escritura pero no de lectura:

with open('./text.txt', 'w') as file:
  for line in file:
    print(line)
    file.write('nuevas cosas') 

Permiso de lectura y escritura:

with open('./text.txt', 'r+') as file:
  for line in file:
    print(line)
    file.write('\nnuevas cosas\n')
    file.write('otra linea\n')
    file.write('otra otra linea\n')

Permiso de escritura (sobreescribe el archivo reemplazando lo que estaba originalmente):

with open('./text.txt', 'w+') as file:
  for line in file:
    print(line)
    file.write('nuevas cosas\n')
    file.write('otra linea\n')
    file.write('otra otra linea\n') 

En Python, los permisos de lectura y escritura se refieren a los derechos de acceso que tiene un programa para leer o modificar un archivo. Python proporciona diferentes métodos y atributos para trabajar con los permisos de archivo.

  1. Lectura de archivos:

    • open() con el modo de apertura 'r': Permite abrir un archivo en modo de lectura. Esto permite al programa leer el contenido del archivo, pero no modificarlo. Ejemplo: archivo = open('archivo.txt', 'r').
  2. Escritura de archivos:

    • open() con el modo de apertura 'w': Permite abrir un archivo en modo de escritura. Si el archivo ya existe, se sobrescribe su contenido; de lo contrario, se crea uno nuevo. Ejemplo: archivo = open('archivo.txt', 'w').
    • open() con el modo de apertura 'a': Permite abrir un archivo en modo de escritura, pero en este caso, los datos se agregan al final del archivo en lugar de sobrescribirlo. Si el archivo no existe, se crea uno nuevo. Ejemplo: archivo = open('archivo.txt', 'a').
  3. Lectura y escritura de archivos:

    • open() con el modo de apertura 'r+': Permite abrir un archivo en modo de lectura y escritura. Esto significa que el programa puede leer el contenido existente y también modificarlo. Ejemplo: archivo = open('archivo.txt', 'r+').
    • open() con el modo de apertura 'w+': Permite abrir un archivo en modo de lectura y escritura. Si el archivo ya existe, se sobrescribe su contenido; de lo contrario, se crea uno nuevo. Ejemplo: archivo = open('archivo.txt', 'w+').
  4. Permisos de archivo adicionales:

    • os.access(): Permite verificar los permisos de acceso a un archivo. Puede usarse para verificar si un archivo tiene permisos de lectura, escritura o ejecución. Ejemplo: os.access('archivo.txt', os.R_OK) verifica si el archivo tiene permisos de lectura.

Es importante tener en cuenta que los permisos de archivo también dependen del sistema operativo subyacente y de los permisos asignados a los archivos por el sistema de archivos. Python respeta estos permisos y no puede otorgar más permisos de los que el sistema operativo permite.

Recuerda que siempre es una buena práctica cerrar el archivo después de usarlo utilizando el método close() o utilizando un bloque with para garantizar que los recursos se liberen adecuadamente, incluso en caso de excepciones.

import os

# Verificar permisos de lectura
if os.access('text.txt', os.R_OK):
    print("El archivo tiene permisos de lectura.")
else:
    print("El archivo no tiene permisos de lectura.")

# Leer el contenido del archivo
with open('text.txt', 'r') as archivo_lectura:
    contenido = archivo_lectura.read()
    print("Contenido del archivo:")
    print(contenido)

# Verificar permisos de escritura
if os.access('text.txt', os.W_OK):
    print("El archivo tiene permisos de escritura.")
else:
    print("El archivo no tiene permisos de escritura.")

# Escribir contenido en el archivo
with open('text.txt', 'w') as archivo_escritura:
    archivo_escritura.write("Este es un nuevo contenido.")

# Leer el contenido actualizado del archivo
with open('text.txt', 'r') as archivo_lectura:
    contenido_actualizado = archivo_lectura.read()
    print("Contenido actualizado del archivo:")
    print(contenido_actualizado)

En este ejemplo, se realizan las siguientes acciones:

  1. Se utiliza os.access() para verificar si el archivo 'text.txt' tiene permisos de lectura (os.R_OK). Se imprime un mensaje indicando si tiene o no permisos de lectura.

  2. Se utiliza un bloque with para abrir el archivo en modo de lectura ('r'). Se lee y se imprime el contenido del archivo.

  3. Se utiliza os.access() para verificar si el archivo tiene permisos de escritura (os.W_OK). Se imprime un mensaje indicando si tiene o no permisos de escritura.

  4. Se utiliza un bloque with para abrir el archivo en modo de escritura ('w'). Se escribe un nuevo contenido en el archivo.

  5. Se utiliza otro bloque with para abrir el archivo en modo de lectura nuevamente. Se lee y se imprime el contenido actualizado del archivo.

Recuerda que debes tener un archivo llamado 'text.txt' en el mismo directorio que el script, y los permisos de archivo pueden variar según el sistema operativo y la configuración del sistema de archivos.

Una única correción a la clase que me parece que aporta. Si queremos que el salto de linea separe la ultima linea del file de la que estamos agregando no debe ir al final de nuestra nueva linea sino al principio. Así:

with open('./text.txt', "r+") as file:
    for line in file:
        print(line)

    file.write('\nnuevas cosas en mi archivo')

Saludos,
Marian.

les recomiendo el siguiente sitio Lorem Ipsum para generar párrafos aleatorios

Escribiendo en archivos en Python

  • Hay dos formas de escribir contenido en archivos con Python, así que veamos ambas. Cabe resaltar que, en ambos casos, necesitamos abrir el archivo en modo de escritura, ya sea con w, r+, a o a+.

Cómo escribir en un archivo usando write() en Python
La función write(), la podemos usar para escribir en un archivo ya abierto y nos recibe solo el texto (string) que vayamos a agregar. Veamos cómo escribir una lista de nombre en un archivo:

## La lista de nombres a escribir
nombres = ["Juan", "Susana", "Andrea", "Melanie", "Andrés"]

## Abrimos en modo escritura
archivo = open("nombres.txt", "w")

## Recorremos la lista y agregamos cada nombre al archivo
for nombre in nombres:
    archivo.write(nombre + "\n")

## Muy importante cerrar el archivo.
archivo.close()

Escribiendo en un archivo con Python usando print()

  • Ahora, exploremos otro modo de escribir en un archivo, esta vez, usando print(). Notarás que es la misma función con la cual mostramos mensajes por pantalla. Sin embargo, podemos usarla para imprimir valores en un archivo con el parámetro “file” y sacando ventaja de su funcionamiento habitual (saltos de línea, espacios y demás).
## La misma lista de nombres a escribir
nombres = ["Juan", "Susana", "Andrea", "Melanie", "Andrés"]

## Abrimos en modo escritura
archivo = open("nombres.txt", "w")

## Recorremos la lista y agregamos cada nombre al archivo
for nombre in nombres:
    print(nombre, file=archivo)

## NO olvides cerrar el archivo
archivo.close()
* w+ sobreescribe (borra y escribe la instrucción nueva) * alt + 92 para sacar backslash
```python aqui esta mi aporte espero que le guste with open('./text.txt', 'w+') as file: for line in file: print(line) file.write('nuevas cosas en este archivo\n') file.write('otra line\n') file.write('mas line\n') # W+ sirve para sobreescribir el archivo # w siver para ecribir en el archivo # r+ sirve para leer y ecribir en el archivo # r sirve para leer el archivo ```
Distintas formas de escribir un archivo de texto en python: * **‘r+’ (lectura/escritura):** Abre el archivo para leer y escribir. El puntero del archivo se coloca al principio del archivo. with open('nombre\_del\_archivo.txt', 'r+') as archivo:     contenido = archivo.read()  # Lee el contenido existente     archivo.write('Hola, mundo!')  # Escribe en el archivo * **‘w+’ (lectura/escritura):** Abre el archivo para leer y escribir. Si el archivo existe, se trunca a cero. Si el archivo no existe, se crea un nuevo archivo. with open('nombre\_del\_archivo.txt', 'w+') as archivo:     archivo.write('Hola, mundo!')  # Escribe en el archivo     archivo.seek(0)  # Mueve el puntero al principio del archivo     contenido = archivo.read()  # Lee el contenido del archivo * **‘w’ (escritura):** Abre el archivo para escritura. Crea un nuevo archivo si no existe o trunca el archivo si ya existe. with open('nombre\_del\_archivo.txt', 'w') as archivo:     archivo.write('Hola, mundo!')
Practicando un poco cree una función propia para codificar y descodificar archivos de texto (ed: Base64) 🐍🎮 ![](https://static.platzi.com/media/user_upload/VS_Code_Extension-enconde_py-8fc929e2-0437-4fa5-9428-223ba9617ae9.jpg)
`r+` **(Lectura y Escritura):** * Abre el archivo para lectura y escritura. * El puntero (cursor) se coloca al principio del archivo. * Si el archivo no existe, se producirá un error (`FileNotFoundError`).
![](https://static.platzi.com/media/user_upload/image-fdae5470-37ff-44d1-8dff-71219de0b430.jpg)En este capitulo creo que falto hablar del seek. file.seek(0) retorna el puntero del file al inicio de este
## Escribir en un archivo Escribir en un archivo en Python es una tarea común y esencial. Python proporciona varias formas de hacerlo, cada una adecuada para diferentes situaciones. Es importante comprender los distintos modos de apertura de archivos y cómo funcionan. ### Modos de Apertura de Archivos * `'r'` **(Lectura)**: Abre el archivo para lectura. Este es el valor predeterminado si no se especifica el modo. * `'w'` **(Escritura)**: Abre el archivo para escritura, creando un nuevo archivo o sobrescribiendo el existente. * `'a'` **(Agregar)**: Abre el archivo para escritura, pero cualquier dato escrito se agrega al final del archivo sin sobrescribir el contenido existente. * `'r+'` **(Lectura y Escritura)**: Abre el archivo para leer y escribir. No crea un nuevo archivo si no existe. * `'w+'` **(Escritura y Lectura)**: Abre el archivo para leer y escribir, similar a `'r+'`, pero sobrescribe el archivo existente o crea uno nuevo si no existe. ### Escribir en un Archivo El método `write()` de un objeto de archivo se utiliza para escribir una cadena en un archivo. Aquí te muestro un ejemplo corregido y mejorado del código que has proporcionado: \# Abriendo un archivo para escritura y lectura ('w+') ```js # Abriendo un archivo para escritura y lectura ('w+') with open('./24_text.txt', 'w+') as file: # Escribir en el archivo file.write("Nuevas cosas en este archivo\n") file.write("Hola\n") file.write("Holaaaaa\n") # Regresar al inicio del archivo para leer file.seek(0) # Leer el contenido del archivo for line in file: print(line) ``` ### Explicación * **Uso de** `with`: Al usar `with open(...) as file`, te aseguras de que el archivo se cierre automáticamente después del bloque de código, incluso si ocurre un error. * **Modo** `'w+'`: Este modo borra el contenido del archivo existente y te permite escribir y luego leer desde el archivo. * **Método** `seek(0)`: Como el modo `'w+'` posiciona el cursor al final del archivo después de escribir, debes usar `file.seek(0)` para volver al inicio del archivo antes de leerlo. ### Consideraciones * **Manejo de la Memoria**: Leer un archivo con un bucle `for` es eficiente en términos de memoria, ya que lee línea por línea en lugar de cargar todo el contenido en la memoria a la vez. * **Sobrescribir vs. Agregar**: Ten cuidado con los modos `'w'` y `'w+'`, ya que sobrescribirán el archivo existente. Si solo deseas agregar contenido, utiliza `'a'` o `'a+'`.

En este contenido. no pense que se pudiera editar un archivo de texto en este entorno con el proposito de mejorar nuestra capacidad de aprendizaje.

Es recomendable agregar el enconding por si caracteres extraños en el documento. Por último, por lo que ve lo mejor es agregarlo al final ya que si colocamos despues de la ruta del archivo no nos va funcionar el 'r+' o 'w+'![](https://static.platzi.com/media/user_upload/Code_9iOMj5ZjcI-8d0ef4e4-0a09-412c-bd33-f792b21c90f3.jpg)
# Escribir en un archivo

# https://www.w3schools.com/python/python_file_write.asp

'''
Tipos de permisos para los archivos:
    r => Permiso de lectura
    w => Permiso de escritura
    w+ => Permisos tanto de lectura como de escritura. Enfocado en reescribir
    r+ => Permisos tanto de lectura como de escritura. Enfocado en agregar
'''

# Al utilizar 'r+' se agregan nuevas líneas al archivo, respentando el contenido
with open('./text.txt', 'r+') as file:
  for line in file:
    print(line)
  file.write('nuevas cosas en este archivo\n') # Para el salto de línea se usa "\n"
  file.write('otra linea\n')
  file.write(' mas linea\n')

# Al utilizar 'w+' se re-escribe la info del archivo, es decir, reemplaza el contenido total del archivo
with open('./text.txt', 'w+') as file:
  for line in file:
    print(line)
  file.write('\n')
  file.write('una nueva linea\n')

```python # "r+" permiso de escritura Y LECTURA # "w+" para no duplicar contenido en txt tambien escritura y lectura # escribir en un txt with open ("./text.txt" , "r+") as texto: for linea in texto: print(linea) texto.write (" Nuevas escrituras \n ") texto.write (" otra linea \n ") texto.write (" otra linea mas \n ") ```# "r+" permiso de escritura Y LECTURA# "w+" para no duplicar contenido en txt tambien escritura y lectura# escribir en un txt with open ("./text.txt" , "r+") as texto:  for linea in texto:    print(linea)  texto.write (" Nuevas escrituras \n ")  texto.write (" otra linea \n ")  texto.write (" otra linea mas \n ")
  1. Modo de Solo Lectura (‘r’):

    # Abre el archivo en modo lectura
    with open('archivo.txt', 'r') as file:
        contenido = file.read()
    print(contenido)
    
  2. Modo de Escritura (‘w’):

    # Abre el archivo en modo escritura (sobrescribe el contenido si existe)
    with open('archivo.txt', 'w') as file:
        file.write("Hola, mundo!")
    
  3. Modo de Anexar (‘a’):

    # Abre el archivo en modo anexar (agrega contenido al final)
    with open('archivo.txt', 'a') as file:
        file.write("\nEsta es una línea de ejemplo.")
    
  4. Modo de Creación Exclusiva (‘x’):

    # Abre el archivo en modo de creación exclusiva (error si el archivo ya existe)
    try:
        with open('archivo.txt', 'x') as file:
            file.write("Este es un nuevo archivo.")
    except FileExistsError:
        print("El archivo ya existe.")
    
  5. Modo Binario (‘b’) (Lectura Binaria):

    # Abre un archivo binario en modo lectura
    with open('archivo.bin', 'rb') as file:
        contenido = file.read()
    
  6. Modo Binario (‘b’) (Escritura Binaria):

    # Abre un archivo binario en modo escritura (sobrescribe el contenido si existe)
    with open('archivo.bin', 'wb') as file:
        file.write(b'\x48\x65\x6c\x6c\x6f')  # Escribe datos binarios (ejemplo: "Hello")
    
  7. Modo de Texto (‘t’) (Modo Predeterminado):

    # Abre un archivo de texto en modo lectura
    with open('texto.txt', 'rt') as file:
        contenido = file.read()
    
  8. Modo de Actualización (’+’) (Lectura y Escritura Simultánea):

    # Abre el archivo en modo de lectura y escritura
    with open('archivo.txt', 'r+') as file:
        contenido = file.read()
        file.write("\nNueva línea agregada.")
    

Para escribir en un archivo en Python, puedes seguir estos pasos:

  1. Abrir o crear el archivo: Utiliza la función open() para abrir o crear el archivo en modo escritura. Debes proporcionar el nombre del archivo que deseas abrir o crear y el modo de apertura, que en este caso es "w" para escritura. Si el archivo no existe, se creará; si ya existe, se sobrescribirá su contenido.

    archivo = open("mi_archivo.txt", "w")
    
    
  2. Escribir en el archivo: Utiliza el método .write() del objeto de archivo para escribir contenido en el archivo.

    archivo.write("Hola, mundo!\\n")
    archivo.write("Esta es una línea de ejemplo.\\n")
    
    

    Puedes usar \\n para agregar saltos de línea entre las líneas que escribas.

  3. Cerrar el archivo: Es importante cerrar el archivo después de escribir en él para guardar los cambios y liberar los recursos del sistema.

    archivo.close()
    
    

Aquí tienes un ejemplo completo que crea un archivo llamado "mi_archivo.txt" y escribe algunas líneas en él:

try:
    # Abrir o crear el archivo en modo escritura
    archivo = open("mi_archivo.txt", "w")

    # Escribir contenido en el archivo
    archivo.write("Hola, mundo!\\n")
    archivo.write("Esta es una línea de ejemplo.\\n")

    # Cerrar el archivo para guardar los cambios
    archivo.close()

    print("Contenido escrito en el archivo.")

except IOError as e:
    print(f"Error al escribir en el archivo: {e}")

Este código abrirá o creará el archivo "mi_archivo.txt", escribirá el contenido especificado en él y luego cerrará el archivo. Puedes verificar el archivo para ver el contenido escrito.

MODO LECTURA Y ESCRITURA (‘r+’)
El parámetro 'r+' en la función open se utiliza para abrir un archivo en modo de lectura y escritura. Esto significa que puedes tanto leer como escribir en el archivo. Aquí tienes un ejemplo de cómo usarlo:

with open('archivo.txt', 'r+') as archivo:
    contenido = archivo.read()  # Leer contenido existente
    print("Contenido actual del archivo:")
    print(contenido)

    # Escribir contenido adicional al final del archivo
    archivo.write("\nEste es contenido adicional.")

    # Regresar al inicio del archivo para leer desde el principio
    archivo.seek(0)
    
    # Leer el contenido modificado
    nuevo_contenido = archivo.read()
    print("Contenido modificado del archivo:")
    print(nuevo_contenido)

En este ejemplo:

  1. Usamos open para abrir el archivo “archivo.txt” en modo de lectura y escritura ('r+').

  2. Primero, leemos el contenido existente del archivo utilizando el método read() y lo almacenamos en la variable contenido. Luego, imprimimos este contenido.

  3. Luego, escribimos contenido adicional al final del archivo utilizando el método write(). Esto añade nueva información al archivo sin borrar el contenido existente.

  4. Después de escribir, usamos el método seek(0) para volver al inicio del archivo. Esto nos permite leer desde el principio.

  5. Finalmente, leemos el contenido modificado del archivo y lo imprimimos.

El modo 'r+' es útil cuando necesitas leer y escribir en el mismo archivo en una sola operación. Ten en cuenta que debes tener precaución al escribir en un archivo abierto en modo 'r+', ya que puedes sobrescribir contenido existente si no tienes cuidado.

**CREAR Y ESCRIBIR UN ARCHIVO **

En la función open de Python, los parámetros x, a y w son modos que puedes usar para especificar cómo deseas abrir un archivo. Cada uno de estos modos tiene un propósito específico:

  1. ‘x’ (Modo de creación exclusiva): Este modo se utiliza para crear un archivo nuevo y, si ya existe un archivo con el mismo nombre, se generará un error (FileExistsError). Es útil cuando deseas asegurarte de que el archivo no exista previamente antes de crearlo.
with open('archivo_nuevo.txt', 'x') as archivo:
    archivo.write("Este es un nuevo archivo.")
  1. ‘a’ (Modo de agregado): En este modo, el archivo se abre para escritura, pero si el archivo ya existe, el nuevo contenido se agrega al final del archivo en lugar de sobrescribirlo.
with open('archivo_existente.txt', 'a') as archivo:
    archivo.write("Este contenido se agrega al final del archivo.")
  1. ‘w’ (Modo de escritura): Este modo se utiliza para abrir un archivo en modo escritura. Si el archivo ya existe, su contenido se sobrescribirá. Si no existe, se creará un archivo nuevo.
with open('archivo_existente.txt', 'w') as archivo:
    archivo.write("Este contenido sobrescribirá el contenido anterior.")

En resumen:

  • 'x' se utiliza para crear un archivo nuevo y genera un error si ya existe.
  • 'a' se utiliza para abrir un archivo en modo de agregado, añadiendo contenido al final.
  • 'w' se utiliza para abrir un archivo en modo escritura, sobrescribiendo el contenido si ya existe.

Elige el modo que mejor se adapte a tus necesidades según si deseas crear un archivo nuevo, agregar contenido a uno existente o sobrescribir un archivo existente.

Super!!

Ten en cuenta que el modo ‘w’ sobrescribirá el contenido existente en el archivo.
Si deseas agregar contenido al final del archivo sin eliminar el contenido existente,
puedes utilizar el modo ‘a’ en lugar del modo ‘w’ al abrir el archivo:

with open('archivo.txt', 'w') as archivo:
    archivo.write('Hola, mundo!\n')
    archivo.write('Estoy escribiendo en un archivo de texto.\n')
with open('archivo.txt', 'a') as archivo:
    archivo.write('Esta línea será agregada al final del archivo.\n')
with open('./text.txt', 'w+') as file:
  for line in file:
    print(line)
  file.write('new thing in this pkg \n')
  file.write('new thing in this pkg \n')
  file.write('new thing in this pkg \n')

Para leer y escribir lineas especificas del texto:

file_text = 'python 102\\files\\text.txt'

with open(file_text, 'r') as file:
    read_line_num = int(input('escribe la linea que deseas leer = > '))  
    line = file.readlines()
    print(line[read_line_num - 1]) 

with open(file_text, 'r+') as file:
    write_line_num = int(input('Escribe en qué linea deseas escribir: ')) 
    line = file.readlines()
    file.seek(0) 
    line[write_line_num - 1] = 'Este texto se escribio en la linea {}\n'.format(write_line_num)
    file.writelines(line)  

Open Mode Codes

la instruccion open() nos permite abrir un archivo en python. sin embargo solo nos da permisos de lectura. si quisiéramos agregar texto. tendríamos que hacerlo de la siguiente manera
open(’./text.txt’, ‘r+’) --> Nos da permiso tanto de lectura como de escritura pero no da el salto de línea al final para ello se usa /n

Permisos de files en python

  • “open()” para abrir un archivo, se puede especificar el modo en que se desea abrir el archivo, es decir, si se desea leer, escribir o ambas operaciones en el archivo.

  • Cuando se abre un archivo en modo de lectura (“r”), significa que el programa solo puede leer el contenido

  • No puede escribir en él ni modificarlo con (“r”).

  • Esto se logra mediante la apertura del archivo en modo “solo lectura”.

  • Es importante destacar que si el archivo no existe en la ruta especificada, se producirá un error al intentar abrirlo en modo de lectura.

  • Es importante asegurarse de que el archivo exista y tenga los permisos necesarios para ser leído antes de intentar abrirlo en modo de lectura.

Quisera aportar algo con respecto al uso de ‘\n’, despu’es de intentar con la propuesta de la clase y de algunos comentarios llegu’e a la conclusi’on de que se debe usar al inicio de cada texto que querramos escribir, a mi entender este simbolo indica salto de linea, por lo cu’al lo correcto es saltar de l’inea y luego poner la palabra. De lo contrario si lo ponen al final y el .txt no tiene una linea vacia escribira seguido del texto de la ultima linea.
Ejemplo>
with open(’./text.txt’,‘r+’) as file:
for line in file:
print(line)
file.write(‘test\n’)
file.write(‘nuevo test\n’)

dfg
sdfg
dfg
dfg
fdg
vb
xcvbtest **********Usando \n al final pasa esto **********

Ejemplo correcto>
with open(’./text.txt’,‘r+’) as file:
for line in file:
print(line)
file.write(’\ntest’)
file.write(’\nnuevo test’)

dfg
sdfg
dfg
dfg
fdg
vb
xcv
test Usando \n al inicio me sale correcto
nuevo test

Hola!

Les comparto el código de la clase.

# Escribir en un archivo
# https://www.w3schools.com/python/python_file_write.asp
# https://platzi.com/blog/administracion-usuarios-servidores-linux/
# https://platzi.com/blog/cosas-que-nos-sabias-sobre-el-sistema-de-permisos-de-linux-realmente-es-octal/

'''
r+ da permisos tanto de lectura como de escritura, respetando el contenido original del archivo, es decir agregando nuevas lineas.
w+ da permisos tanto de lectura como de escritura, sin embargo este sobreescribe el contenido del archivo.
''' 

with open("./text.txt", "w+") as file:
  print(file.read())
  file.write("Nuevas cosas en este archivo\n")
  file.write("Otra linea\n")
  file.write("Una mas\n")

Si alguien está usando Mac con keyboard en español (LATAM) y no sabe como poner el backslash, se puede lograr con “option” + “?” 😃

with open("./Platzi/Funciones Comprehensions y Manejo de errores/Manipulacion de archivos y errores/text.txt","r+") as file:
    for line in file:
        print(line)
    #with open("./Platzi/","r") as file:
    #Solo permiso de lectura
    
    #with open("./Platzi/","w") as file:
    #Solo permiso de escritura, borra al txt original
    
    #with open("./Platzi/","r+") as file:
    #Permisos de lectura y escritura, la escritura respetara el txt original
    
    #with open("./Platzi/","w+") as file:
    #Permisos de lectura y escritura, la escritura sobrescribira el txt original
    
    file.write("\nNuevas cosas en este archivo\n")
    file.write("\nNuevas cosas en este archivo 1\n")
    file.write("\nNuevas cosas en este archivo 2\n")
    file.write("\nNuevas cosas en este archivo 3 \n")
  • Escribir archivos: modificar archivos

    • Para escribir en un archivo en Python, puedes utilizar el método open() de la siguiente manera:
    with open('nombre_del_archivo.txt', 'w') as f:
        f.write('Hola mundo')
    
    
    • Esto abrirá el archivo en modo escritura ('w') y creará un objeto de archivo (f). Luego, puedes usar el método write() para escribir en el archivo. Si el archivo no existe, se creará automáticamente. Si el archivo ya existe, se sobrescribirá.
    • También puedes usar el modo 'a' (append) para añadir contenido al final del archivo sin sobrescribir lo que ya existe:
    with open('nombre_del_archivo.txt', 'a') as f:
        f.write('Hola mundo')
    
    
    • Es importante cerrar el archivo cuando hayas terminado de trabajar con él. La sintaxis with open se encarga de cerrar el archivo automáticamente cuando se sale del bloque de código.
    • Para hacer un salto de línea al escribir en un archivo en Python, puedes usar el carácter de nueva línea (\n). Por ejemplo:
    with open('nombre_del_archivo.txt', 'w') as f:
        f.write('Hola mundo\n')
    
    • Esto escribirá “Hola mundo” y luego saltará a la siguiente línea.
    • También puedes usar el método writelines() para escribir varias líneas a la vez. Por ejemplo:
    with open('nombre_del_archivo.txt', 'w') as f:
        f.writelines(['Hola mundo\n', '¿Cómo estás?\n'])
    
    • Esto escribirá “Hola mundo” y “¿Cómo estás?” en dos líneas diferentes.- Escribir archivos: modificar archivos
    • Para escribir en un archivo en Python, puedes utilizar el método open() de la siguiente manera:
    with open('nombre_del_archivo.txt', 'w') as f:
        f.write('Hola mundo')
    
    
    • Esto abrirá el archivo en modo escritura ('w') y creará un objeto de archivo (f). Luego, puedes usar el método write() para escribir en el archivo. Si el archivo no existe, se creará automáticamente. Si el archivo ya existe, se sobrescribirá.
    • También puedes usar el modo 'a' (append) para añadir contenido al final del archivo sin sobrescribir lo que ya existe:
    with open('nombre_del_archivo.txt', 'a') as f:
        f.write('Hola mundo')
    
    
    • Es importante cerrar el archivo cuando hayas terminado de trabajar con él. La sintaxis with open se encarga de cerrar el archivo automáticamente cuando se sale del bloque de código.
    • Para hacer un salto de línea al escribir en un archivo en Python, puedes usar el carácter de nueva línea (\n). Por ejemplo:
    with open('nombre_del_archivo.txt', 'w') as f:
        f.write('Hola mundo\n')
    
    • Esto escribirá “Hola mundo” y luego saltará a la siguiente línea.
    • También puedes usar el método writelines() para escribir varias líneas a la vez. Por ejemplo:
    with open('nombre_del_archivo.txt', 'w') as f:
        f.writelines(['Hola mundo\n', '¿Cómo estás?\n'])
    
    • Esto escribirá “Hola mundo” y “¿Cómo estás?” en dos líneas diferentes.

Para comenzar a escribir en una linea diferente a la que termina el archivo(es decir, una linea debalo de la ultima linea ), pueden usar un salto de linea al comienzo, ejemplo:

with open('./text.txt', 'r+') as file:
  for line in file:
    print(line)
  file.write('\n')   
  file.write('New text\n')
  file.write('Another text\n')
  
with open('./text.txt', 'r+') as file:
  for line in file:
    print(line)
  file.write('nuevas cosas en este archivo\n')
  file.write('otra linea\n')
  file.write(' mas linea\n')

#w+ permite leer el archivo, pero al agregar write sobreescribe el archivo
 #r+ agrega el texto al final del archivo```

Excelente como escribir en un archivo