Objetos de archivo en Python

Un objeto de archivo nos permite usar, acceder y manipular todos los archivos accesibles por el usuario. Uno puede leer y escribir tales archivos.
Cuando una operación de archivo falla por un motivo relacionado con E/S, se genera la excepción IOError. Esto incluye situaciones en las que la operación no está definida por algún motivo, como seek() en un dispositivo tty o escribiendo un archivo abierto para lectura.
Los archivos tienen los siguientes métodos:

  • open(): Abre un archivo en el modo de acceso dado.
     open(file_address, access_mode) 

    Ejemplos de acceso a un archivo: Un archivo se puede abrir con una función integrada llamada open(). Esta función toma la dirección del archivo y el modo de acceso y devuelve un objeto de archivo.
    Hay diferentes tipos de access_modes:

    r: Opens a file for reading only
    r+: Opens a file for both reading and writing
    w: Opens a file for writing only
    w+: Open a file for writing and reading.
    a: Opens a file for appending
    a+: Opens a file for both appending and reading

    Cuando agrega ‘b’ a los modos de acceso, puede leer el archivo en formato binario en lugar del formato de texto predeterminado. Se utiliza cuando el archivo a acceder no está en texto.

  • read([size]) : Lee todo el archivo y devuelve su contenido en forma de string. Lee como máximo bytes de tamaño del archivo (menos si la lectura llega a EOF antes de obtener bytes de tamaño). Si el argumento de tamaño es negativo o se omite, lea todos los datos hasta alcanzar el EOF.

    # Reading a file
    f = open(__file__, 'r')
      
    #read()
    text = f.read(10)
      
    print(text)
    f.close()
  • readline([tamaño]) : Lee la primera línea del archivo, es decir, hasta un carácter de nueva línea o un EOF en caso de que un archivo tenga una sola línea y devuelve una string. Si el argumento de tamaño está presente y no es negativo, es un recuento máximo de bytes (incluido el salto de línea final) y se puede devolver una línea incompleta. Se devuelve una string vacía solo cuando se encuentra EOF inmediatamente.

    # Reading a line in a file
    f = open(__file__, 'r')
      
    #readline()
    text = f.readline(20)
    print(text)
    f.close()
  • readlines([sizehint]) : Lee el archivo completo línea por línea y actualiza cada línea a una lista que se devuelve. Lee hasta EOF usando readline() y devuelve una lista que contiene las líneas así leídas. Si el argumento sizehint opcional está presente, en lugar de leer hasta EOF, se leen líneas completas que suman aproximadamente bytes de sugerencia de tamaño (posiblemente después de redondear a un tamaño de búfer interno).

    # Reading a file
    f = open(__file__, 'r')
      
    #readline()
    text = f.readlines(25)
    print(text)
    f.close()
  • write(string) : Escribe el contenido de la string en el archivo. No tiene valor de retorno. Debido al almacenamiento en búfer, es posible que la string no aparezca en el archivo hasta que se llame al método flush() o close().

    # Writing a file
    f = open(__file__, 'w')
    line = 'Welcome Geeks\n'
      
    #write()
    f.write(line)
    f.close()

    Más ejemplos en diferentes modos:

    # Reading and Writing a file
    f = open(__file__, 'r+')
    lines = f.read()
    f.write(lines)
    f.close()

    # Writing and Reading a file
    f = open(__file__, 'w+')
    lines = f.read()
    f.write(lines)
    f.close()

    # Appending a file
    f = open(__file__, 'a')
    lines = 'Welcome Geeks\n'
    f.write(lines)
    f.close()

    # Appending and reading a file
    f = open(__file__, 'a+')
    lines = f.read()
    f.write(lines)
    f.close()
  • writelines(sequence) : es una secuencia de strings para el archivo, generalmente una lista de strings o cualquier otro tipo de datos iterables. No tiene valor de retorno.

    # Writing a file
    f = open(__file__, 'a+')
    lines = f.readlines()
      
    #writelines()
    f.writelines(lines)
    f.close()
  • tell() : Devuelve un entero que nos dice la posición del objeto del archivo desde el principio del archivo en forma de bytes

    # Telling the file object position
    f = open(__file__, 'r')
    lines = f.read(10)
      
    #tell()
    print(f.tell())
    f.close()
  • seek(offset, from_where) : Se utiliza para cambiar la posición del objeto del archivo. Offset indica el número de bytes que se moverán. from_where indica desde dónde se van a mover los bytes.

    # Setting the file object position
    f = open(__file__, 'r')
    lines = f.read(10)
    print(lines)
      
    #seek()
    print(f.seek(2,2))
    lines = f.read(10)
    print(lines)
    f.close()
  • flush() : vacía el búfer interno, como fflush() de stdio. No tiene valor de retorno. close() vacía automáticamente los datos, pero si desea vaciar los datos antes de cerrar el archivo, puede usar este método.

    # Clearing the internal buffer before closing the file
    f = open(__file__, 'r')
    lines = f.read(10)
      
    #flush()
    f.flush()
    print(f.read())
    f.close()
  • fileno() : Devuelve el descriptor de archivo entero que utiliza la implementación subyacente para solicitar operaciones de E/S del sistema operativo.

    # Getting the integer file descriptor
    f = open(__file__, 'r')
      
    #fileno()
    print(f.fileno())
    f.close()
  • isatty() : Devuelve True si el archivo está conectado a un dispositivo tty(-like) y False si no lo está.

    # Checks if file is connected to a tty(-like) device
    f = open(__file__, 'r')
      
    #isatty()
    print(f.isatty())
    f.close()
  • next() : Se usa cuando un archivo se usa como iterador. El método se llama repetidamente. Este método devuelve la siguiente línea de entrada o genera StopIteration en EOF cuando el archivo está abierto para lectura (el comportamiento no está definido cuando se abre para escritura).

    # Iterates over the file
    f = open(__file__, 'r')
      
    #next()
    try:
        while f.next():
            print(f.next())
    except:
        f.close()
  • truncar([tamaño]) : Trunca el tamaño del archivo. Si el argumento de tamaño opcional está presente, el archivo se trunca a (como máximo) ese tamaño. El tamaño predeterminado es la posición actual. La posición actual del archivo no cambia. Tenga en cuenta que si un tamaño especificado excede el tamaño actual del archivo, el resultado depende de la plataforma: las posibilidades incluyen que el archivo permanezca sin cambios, aumente al tamaño especificado como si estuviera lleno de ceros o aumente al tamaño especificado con contenido nuevo indefinido.

    # Truncates the file
    f = open(__file__, 'w')
      
    #truncate()
    f.truncate(10)
    f.close()
  • close() : Se utiliza para cerrar un archivo abierto. Un archivo cerrado ya no se puede leer ni escribir.

    # Opening and closing a file
    f = open(__file__, 'r')
      
    #close()
    f.close()
  • Atributos :
    • cerrado : devuelve un valor booleano que indica el estado actual del objeto de archivo. Devuelve verdadero si el archivo está cerrado y falso cuando el archivo está abierto.
    • codificación : la codificación que utiliza este archivo. Cuando las strings Unicode se escriben en un archivo, se convertirán en strings de bytes utilizando esta codificación.
    • mode : El modo de E/S para el archivo. Si el archivo se creó utilizando la función incorporada open(), este será el valor del parámetro de modo.
    • name : si el objeto de archivo se creó usando open(), el nombre del archivo.
    • newlines : un objeto de archivo que se ha abierto en el modo de nueva línea universal tiene este atributo que refleja la convención de nueva línea utilizada en el archivo. El valor de este atributo es «\r», «\n», «\r\n», Ninguno o una tupla que contiene todos los tipos de nueva línea vistos.
    • softspace : es un booleano que indica si un carácter de espacio debe imprimirse antes de otro valor cuando se usa la declaración de impresión.

      f = open(__file__, 'a+')
      print(f.closed)
      print(f.encoding)
      print(f.mode)
      print(f.newlines)
      print(f.softspace)

Artículo relacionado:
Lectura y escritura de archivos de texto en Python

Referencia: https://docs.python.org/2.4/lib/bltin-file-objects.html
Este artículo es una contribución de Sri Sanketh Uppalapati . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *