es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se realiza la adición a un entero almacenado en un archivo de texto en Python?

Quiero disculparme por ser malo en programación antes de comenzar.

Entonces, almaceno SOLO enteros en la primera línea de un archivo de texto en Python. Y quiero una función para sumar +1 al entero en el archivo de texto.

def sumaruno():
    with open("data/" + str(mensajero) + ".txt", "r+") as f:
        datoentero = f.readline()

Este es mi código incompleto de la función. En este momento, datoentero = 1, pero es una cadena de texto.

¿Cómo puedo hacer para que sume +1 a datoentero e imprima el valor cada vez que se llame a esta función?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar +1 al entero almacenado en el archivo de texto usando el código proporcionado, puedes convertir la cadena dataint a un entero usando la función int(). Luego puedes agregar 1 al entero, convertirlo nuevamente a una cadena usando str() y escribirlo de nuevo en el archivo usando el método write(). Aquí está el código modificado:

    def addone():
        with open("data/" + str(messager) + ".txt", "r+") as f:
            dataint_str = f.readline().strip() # eliminar cualquier carácter de espacio en blanco
            dataint = int(dataint_str) # convertir a entero
            dataint += 1 # agregar 1
            f.seek(0) # mover el puntero del archivo de nuevo al inicio
            f.write(str(dataint)) # escribir el nuevo entero en el archivo
            f.truncate() # truncar cualquier carácter adicional en el archivo
        print(dataint) # imprimir el valor del nuevo entero
    

    Nota que después de escribir el nuevo entero en el archivo, se llama al método truncate() para eliminar cualquier carácter adicional que pueda estar presente en el archivo. Esto es necesario porque el nuevo entero puede ser más corto o más largo que el entero original.

Comments are closed.