Programa Python para modificar el contenido de un Archivo Binario

Dado un archivo binario que contiene algunas oraciones (palabras separadas por espacios), escribamos un programa en Python para modificar o alterar cualquier palabra en particular de la oración.

Enfoque:
Paso 1: Búsqueda de la palabra en el archivo binario. 
Paso 2: mientras busca en el archivo, la variable «pos» almacena la posición del registro del puntero del archivo y luego recorre (continúa) la lectura del registro. 
Paso 3: Si la palabra a buscar existe, coloque el puntero de escritura (al final del registro anterior), es decir, en la pos. 
Paso 4: Llame a la función write() para tomar el nuevo registro. 
Paso 5: escriba el nuevo objeto en la posición «pos» y, por lo tanto, el registro se actualiza e imprime «registro actualizado con éxito». 
Paso 6: Si la palabra no existe, imprima «registro no encontrado».

Implementación
Supongamos que el contenido del archivo binario es:

python-binary-file-input

Python3

# Python program to modify the
# content of binary file
 
 
# Function to update the
# content of binary file
def update_binary(word, new)
    # string variable to store
    # each word after reading
    # from the file
    string = b""
 
    # Flag variable to check
    # if the record is found or
    # not
    Flag = 0
 
    # Open the file in r + b mode which means
    # opening a binary file for reading and
    # writing
    with open('file.txt', 'r + b') as file:
 
        pos = 0
 
        # Reading the content of the
        # file character by character
        data = string = file.read(1)
 
        # Looping till the end of
        # file is reached
        while data:
            data = file.read(1)
 
            # Checking if the space is reached
            if data == b" ":
 
                # checking the word read with
                # the word entered by user
                if string == word:
 
                    # Moving the file pointer
                    # at the end of the previously
                    # read record
                    file.seek(pos)
 
                    # Updating the content of the file
                    file.write(new)
                    Flag = 1
                    break
                else:
                    # storing the position of
                    # current file pointer i.e. at
                    # the end of previously read record
                    pos = file.tell()
                    data = string = file.read(1)
            else:
 
                # Storing the data of the file
                # in the string variable
                string += data
                continue
 
 
    if Flag:
        print("Record successfully updated")
    else:
        print("Record not found")
         
         
# Driver code
# Input the word to be found
# and the new word
word = input("Enter the word to be replaced: ").encode()
new = input("\nEnter the new word: ").encode()
 
update_binary(word, new)

Producción:

python-binary-file-output-1

Archivo de texto:

python-binary-file-output-2

Publicación traducida automáticamente

Artículo escrito por nikhilaggarwal3 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 *