Oi pessoal, tudo bem?
Maico, é exatamente isso. Quando abrimos em modo 'w+' ou 'a+', abrimos o arquivo para leitura e escrita. Porém, vale algumas anotações:
- Em w+: Abre para leitura e escrita. O arquivo é criado se ele não existir, caso contrário será sobrescrito. O ponteiro é posicionado no início do arquivo.
Quando fazemos:
with open('dados/contatos.csv', mode='w+', encoding='latin_1') as arquivo_contatos:
Como o arquivo existe, ele será sobrescrito, entenda como apagar o que há no arquivo para escrever novos caracteres. Logo, como você está tentando ler o que nele, porém o mesmo foi sobrescrito, não terá nada para ler. Ficará um arquivo em branco. Por isso não aparece nada.
- Em a+: Abre para leitura e escrita. O arquivo é criado se ele não existir. O ponteiro é posicionado no final do arquivo. Gravações subsequentes no arquivo sempre vão acabar no fim do arquivo atual.
Quando fazemos:
with open('dados/contatos.csv', mode='a+', encoding='latin_1') as arquivo_contatos:
O ponteiro será posicionado no final do arquivo, pois o modo a
é para anexar caracteres ao arquivo sem apagar o conteúdo que já existe nele e quando colocamos o "+" isso não muda, o ponteiro continuará no final do arquivo:
Como o cursor está posicionado no final do arquivo, concorda que não terá dado algum para ler? Então, quando formos efetuar a leitura do arquivo, teremos que dizer para o Python que queremos que o cursor esteja no início e fazemos isso com o seek
, passando como parâmetro o número 0. Ou seja, o cursor será posicionado na primeira letra do arquivo:
Agora, com o cursor posicionado na primeira letra do arquivo conseguiremos ler os dados que há para frente:
with open('dados/contatos.csv', mode='a+', encoding='latin_1') as arquivo_contatos:
arquivo_contatos.seek(0)
for linha in arquivo_contatos:
print(linha, end='')
Pegou a ideia?
Qualquer dúvida é só falar, estou a disposição. Abraços e bons estudos!