Ajude nosso projeto a se manter online, faça um PIX de qualquer valor:
programacao.progressiva@gmail.com

Ler e Escrever num mesmo arquivo em Python (Exercício resolvido)

Neste tutorial de nossa Apostila de Python, vamos te mostrar através de dois exercícios como ler e escrever, em um mesmo arquivo, ao mesmo tempo.

Quer trabalhar e ganhar dinheiro com Python? Obtenha seu certificado
Deseja acessar todo nosso conteúdo em um PDF? Apostila de Python

Exercício: Ler e Escrever num arquivo


"Crie um programa simples que pergunta se a pessoa deseja ler um arquivo ou escrever algo nele."

Nosso script vai funcionar assim:
Aparece um menu de opções (sair, ler ou escrever)
Se digitar ler, lê o conteúdo do arquivo
Se optar por escrever, escreve algo no arquivo

Isso em um looping indefinido, acaba quando o usuário quiser.

Primeiro de tudo, importamos o módulo os.path, isso vai ser necessário pois vamos usar a função isfile() para checar se o arquivo teste.exe existe

Se retornar false, é porque não existe, então cai dentro de um IF que vai criar esse arquivo (usando o modo de abertura de escrita w).

Agora que criamos, vamos abrir o arquivo no modo de leitura e escrita: r+

Arquivo aberto, perguntamos que opção ele deseja fazer.
Se for 0, op fica nulo e termina o laço WHILE.

Se for 1, o usuário quer ler o que tem no arquivo.
Para isto, basta usar a função read() dentro de um print.
Em seguida, fechamos o arquivo, já que terminamos de usar.

Se ele digitar 2, vai cair na opção de escrever.
Então pedimos um número, truncamos o arquivo (retiramos o que tem nele), escrevemos com o método write() e fechamos o arquivo!

E prontinho, é só isso, veja como ficou nosso código Python:

import os.path

op=1
while op:
    if os.path.isfile("teste.txt") is False:
        print("Arquivo teste.txt nao existe. Criando...")
        meuArquivo = open("teste.txt", "w")
    
    meuArquivo = open("teste.txt", "r+")

    op=int(input("0. Sair \n"
                 "1. Ler\n"
                 "2. Escrever\n"))

    if op==1:
        print( meuArquivo.read() )
        meuArquivo.close()
        
    if op==2:
        num = input("Numero:")
        meuArquivo.truncate()
        meuArquivo.write(num)
        meuArquivo.close()

meuArquivo.close()

Exercício de Arquivos em Python

"Ao escrever compare o número que o usuário digitou com o número que está lá armazenado. Só escreva no arquivo se o usuário digitar um número MAIOR do que aquele que está lá".

A única novidade, vai ser a variável num2, ela vai ler o que tem no arquivo, pelo método read().


Em seguida, vamos escrever no arquivo apenas em duas condições:

  1. Se o arquivo estiver vazio, ou seja, num2=''
  2. Se o número do usuário for maior que o armazenado: int(num) > int(num2)


Lembre-se de passar num e num2 para inteiro, pois em arquivos, elas são strings!

Se nenhuma dessas condições for atendida, nada escrevemos no arquivo e dizemos isso dentro de um print no ELSE.

Veja como ficou nosso código:

import os.path


op=1
while op:
    if os.path.isfile("teste.txt") is False:
        print("Arquivo teste.txt nao existe. Criando...")
        meuArquivo = open("teste.txt", "w")

    meuArquivo = open("teste.txt", "r+")

    op=int(input("0. Sair \n"
                 "1. Ler\n"
                 "2. Escrever\n"))

    if op==1:
        print( meuArquivo.read() )
        meuArquivo.close()
            
        
    if op==2:
        num = input("Numero:")
        num2 = meuArquivo.read()
        meuArquivo.seek(0)

        if (num2 is '') or (int(num)>int(num2)):
            meuArquivo.truncate()
            meuArquivo.write(num)
            meuArquivo.close()
        else:
            print(num," menor que ", num2)
meuArquivo.close()
        

Exercício Proposto

No artigo Como criar um jogo em Python, fizemos um game onde o computador sorteia um número de 1 até 100 e você deve adivinhar.

Implemente a função recorde nele.
Ou seja, num arquivo de no recorde.txt você deve armazenar o recorde do número mínimo de tentativas que alguém conseguiu acertar!

Fizemos essa implementação em nossa apostila de Python:
Apostila Python Progressivo

Nenhum comentário:

Postar um comentário