Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Escrever em arquivos

Olá pessoal, estou criando uma aplicação para gravar a saída do input em um arquivo txt, mas ele grava normamalmente e ao rodar o programa novamente ele sobrescreve a palavra gravada anterior, ou seja não gravando todas as saídas do input e sim uma, sei que a funcionalidade do w é escrever e sobreescrever possui alguma outra função que não dê overwrite?

wb

Abre um arquivo para gravação somente em formato binário. Sobrescreve o arquivo se o arquivo existir. Se o arquivo não existir, você criará um novo arquivo para gravação.

W

Abre um arquivo para escrita e leitura. Sobrescreve o arquivo existente se o arquivo existir. Se o arquivo não existir, você criará um novo arquivo para leitura e gravação.

wb +

Abre o arquivo para gravação e leitura em formato binário. Sobrescreve o arquivo existente se o arquivo existir. Se o arquivo não existir, você criará um novo arquivo para leitura e gravação.

CÓDIGO ABAIXO

import random

arquivo = open("boas_vindas.txt", "r")
mensagens_boas_vindas = []

for linha in arquivo:
    mensagens_boas_vindas.append(linha)
arquivo.close()

boas_vindas = random.randrange(0, len(mensagens_boas_vindas))
primeira_interacao = input(mensagens_boas_vindas[boas_vindas])

arquivo = open("respostas_boas_vindas.txt", "w")
arquivo.write(primeira_interacao + "\n")
arquivo.close()
3 respostas

a

Abre um arquivo para anexar. O ponteiro do arquivo está no final do arquivo, se o arquivo existir. Ou seja, o arquivo está no modo de acréscimo. Se o arquivo não existir, ele cria um novo arquivo para gravação.

a+

Abre um arquivo para anexar e ler. O ponteiro do arquivo está no final do arquivo, se o arquivo existir. O arquivo é aberto no modo de acréscimo. Se o arquivo não existir, ele cria um novo arquivo para leitura e gravação.

arquivo = open("respostas_boas_vindas.txt", "a+")
solução!

Oi Igor,

Vejo que você encontrou uma solução para não sobrescrever o arquivo.

Entretanto, o modo a+ posiciona o ponteiro no final do arquivo, dificultando a leitura do conteúdo. Em alguns casos, pode ser que você queira ler o conteúdo do arquivo e depois escrever mais no final. Para tanto, você pode usar o modo r+. Nesse modo, o arquivo é aberto para leitura e escrita, posicionando o ponteiro no começo. Uma diferença importante é o arquivo deve existir.

Por exemplo, considere o arquivo nomes.txt com o seguinte conteúdo:

Joao
Maria
Antonio

O seguinte programa

arquivo = open('nomes.txt', 'r+')

quantidade = len(arquivo.readlines())

arquivo.write('Total: ' + str(quantidade))

modifica o arquivo para

Joao
Maria
Antonio
Total: 3 

Muito obrigado.