Python proporciona funciones integradas para crear, escribir y leer archivos. Hay dos tipos de archivos que se pueden manejar en python, archivos de texto normales y archivos binarios (escritos en lenguaje binario, 0s y 1s).
- Archivos de texto: en este tipo de archivo, cada línea de texto termina con un carácter especial llamado EOL (fin de línea), que es el carácter de nueva línea (‘\n’) en Python de forma predeterminada.
- Archivos binarios: en este tipo de archivo, no hay un terminador para una línea y los datos se almacenan después de convertirlos a un lenguaje binario comprensible por máquina.
Nota: Para obtener más información sobre el manejo de archivos, haga clic aquí .
Modo de acceso
Los modos de acceso gobiernan el tipo de operaciones posibles en el archivo abierto. Se refiere a cómo se usará el archivo una vez que se abra. Estos modos también definen la ubicación del identificador de archivo en el archivo. El identificador de archivo es como un cursor, que define desde dónde se deben leer o escribir los datos en el archivo. Los diferentes modos de acceso para leer un archivo son:
- Solo lectura (‘r’): abre un archivo de texto para leer. El mango se coloca al principio de la lima. Si el archivo no existe, genera un error de E/S. Este es también el modo predeterminado en el que se abre el archivo.
- Leer y escribir (‘r+’): abre el archivo para leer y escribir. El mango se coloca al principio de la lima. Genera un error de E/S si el archivo no existe.
- Agregar y leer (‘a+’): abre el archivo para leer y escribir. El archivo se crea si no existe. El mango se coloca al final de la lima. Los datos que se están escribiendo se insertarán al final, después de los datos existentes.
Nota: Para saber más sobre el modo de acceso haga clic aquí .
Abrir un archivo
Se hace usando la open()
función. No es necesario importar ningún módulo para esta función.
Sintaxis:
File_object = open(r"File_Name", "Access_Mode")
El archivo debe existir en el mismo directorio que el archivo del programa python; de lo contrario, la dirección completa del archivo debe escribirse en lugar del nombre del archivo.
Nota: se r
coloca antes del nombre de archivo para evitar que los caracteres en la string de nombre de archivo se traten como caracteres especiales. Por ejemplo, si hay \temp en la dirección del archivo, \t se trata como el carácter de tabulación y se genera un error de dirección no válida. La r hace que la string sea cruda, es decir, dice que la string no tiene ningún carácter especial. La r se puede ignorar si el archivo está en el mismo directorio y no se coloca la dirección.
# Open function to open the file "MyFile1.txt" # (same directory) in read mode and file1 = open("MyFile.txt", "r") # store its reference in the variable file1 # and "MyFile2.txt" in D:\Text in file2 file2 = open(r"D:\Text\MyFile2.txt", "r+")
Aquí, file1 se crea como objeto para MyFile1 y file2 como objeto para MyFile2.
Cerrar un archivo
close()
La función cierra el archivo y libera el espacio de memoria adquirido por ese archivo. Se utiliza cuando ya no se necesita el archivo o si se va a abrir en un modo de archivo diferente.
Sintaxis:
File_object.close()
# Opening and Closing a file "MyFile.txt" # for object name file1. file1 = open("MyFile.txt", "r") file1.close()
Lectura de un archivo
Hay tres formas de leer datos de un archivo de texto.
- read() : Devuelve los bytes leídos en forma de string. Lee n bytes, si no se especifica n, lee todo el archivo.
File_object.read([n])
- readline() : lee una línea del archivo y regresa en forma de string. Para n especificado, lee como máximo n bytes. Sin embargo, no lee más de una línea, incluso si n excede la longitud de la línea.
File_object.readline([n])
- readlines() : lee todas las líneas y las devuelve como cada línea un elemento de string en una lista.
File_object.readlines()
Nota: ‘\n’
se trata como un carácter especial de dos bytes.
Ejemplo:
# Program to show various ways to # read data from a file. # Creating a file file1 = open("myfile.txt", "w") L = ["This is Delhi \n", "This is Paris \n", "This is London \n"] # Writing data to a file file1.write("Hello \n") file1.writelines(L) file1.close() # to change file access modes file1 = open("myfile.txt", "r+") print("Output of Read function is ") print(file1.read()) print() # seek(n) takes the file handle to the nth # bite from the beginning. file1.seek(0) print("Output of Readline function is ") print(file1.readline()) print() file1.seek(0) # To show difference between read and readline print("Output of Read(9) function is ") print(file1.read(9)) print() file1.seek(0) print("Output of Readline(9) function is ") print(file1.readline(9)) print() file1.seek(0) # readlines function print("Output of Readlines function is ") print(file1.readlines()) print() file1.close()
Producción:
Output of Read function is Hello This is Delhi This is Paris This is London Output of Readline function is Hello Output of Read(9) function is Hello Th Output of Readline(9) function is Hello Output of Readlines function is ['Hello \n', 'This is Delhi \n', 'This is Paris \n', 'This is London \n']
con declaración
with
La declaración en Python se usa en el manejo de excepciones para hacer que el código sea más limpio y mucho más legible. Simplifica la gestión de recursos comunes como flujos de archivos. A diferencia de las implementaciones anteriores, no hay necesidad de llamar file.close()
cuando se usa con la declaración. La with
declaración en sí misma garantiza la adquisición y liberación adecuadas de recursos.
Sintaxis:
with open filename as file:
# Program to show various ways to # read data from a file. L = ["This is Delhi \n", "This is Paris \n", "This is London \n"] # Creating a file with open("myfile.txt", "w") as file1: # Writing data to a file file1.write("Hello \n") file1.writelines(L) file1.close() # to change file access modes with open("myfile.txt", "r+") as file1: # Reading form a file print(file1.read())
Producción:
Hello This is Delhi This is Paris This is London
Nota: Para saber más sobre la declaración with, haga clic aquí .
Publicación traducida automáticamente
Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA