Jump to content
Sign in to follow this  
Tafs

Retornar uma informação de um arquivo de texto

Recommended Posts

Tafs

Não sei se fui claro no título, então aqui vai uma explicação do que quero fazer:

Tenho um arquivo de texto, e nele múltiplas linhas sobre um item/animal, por exemplo:

name=dog
color=brown

E gostaria de saber como procedo para um script em Python ler esse arquivo e colocar numa variável "name" a palavra "dog, fazendo o mesmo com uma variável "color" contendo a palavra "brown".

Desde já, agradeço a ajuda.  :confused:

Share this post


Link to post
Share on other sites
IceBrain

Que código já tens?


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
Tafs

No momento tenho só o .txt com as mesmas informações do primeiro post.

E este script:

Por favor, ignorem meus comentários, hehe  😳

from Tkinter import *

root = Tk()
root.title('Teste') #título da janela (não o prompt)

animalname = 'Dog'
color = 'Brown'

class Application(Frame):
    def printinfo(self):
        print 'Nome: ' + animalname + '\n\
Cor  =  ' + color
    def botoes(self):
        self.QUIT = Button(self) #o botão
        self.QUIT["text"] = "Fechar" #texto do botão
        self.QUIT["fg"] = "red" #texto das letras
        self.QUIT["command"] = self.quit #comando para sair
        self.QUIT.pack({"side": "right"}) #Posição do botão de sair

        self.prtinfo = Button(self) #Os "Button(self)" apesar de serem botões diferentes, usam o mesmo comando
        self.prtinfo["text"] = "Mostrar", #texto do botão
        self.prtinfo["command"] = self.printinfo #comando para mostrar no prompt o texto

        self.prtinfo.pack({"side": "left"}) #Posição do botão das infos

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.botoes()

app = Application(master=root)
app.mainloop()
root.destroy()

Share this post


Link to post
Share on other sites
IceBrain

Eu aconselhava-te a começares por um tutorial de Python. Aqui (onde diz "Comece por aqui") há dois, segue-os. Pelo menos no segundo explica-se bem como ler a partir de ficheiros.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
Tafs

O primeiro tutorial já conhecia, mas nele não vi nada de útil ou relacionado à minha dúvida. O segundo eu já consegui extrair mais informações  :confused: ainda que não tenha saciado minha dúvida.

O que querias me mostrar é o que está escrito na seção 7.2.1 do segundo pdf? Se sim, eu até tentarei aqui, contudo esperava que houvesse uma maneira um tanto quanto mais fácil de ler as informações do arquivo .txt.

Novamente, a ideia que tenho é de ler múltiplas informações de um único arquivo de texto. Como por exemplo o caso do primeiro post, o Dog. Mas além dele, gostaria de incluir outros animais no mesmo arquivo. Por exemplo:

Name=Dog
Color=Brown

Name=Cat
Color=White

De forma que se digitasse Dog, ou Cat, o programa mostrasse as informações contidas no .txt.

Share this post


Link to post
Share on other sites
IceBrain

Na 7.2.1 tens como ler uma linha do ficheiro para uma string.

Posso sugerir-te o método split() que permite dividir uma string em várias por um separador.

De resto, é leres sobre as estruturas de dados em Python para ver qual se ajusta melhor ao problema.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
Pedro C.

Concordo. O comando split parece-me a maneira mais óbvia de resolveres o teu problema. Tenho ideia de termos debatido leitura e escrita de ficheiros noutro tópico. Se aliares o que vimos nesse com este comando consegues resolver o teu problema fácilmente. De resto fica aqui um exemplo da utilização do comando split feito em consola:

>> line='Name=Dog'

>> lista=line.split('=')

>> lista
>> ['Name', 'Dog']

>> lista[0]
>> 'Name'

>> lista[1]
>> 'Dog'

Repara apenas que na utilização do comando split disse qual era o separador que queria usar ('=', se não meteres nada, por defeito, fica o espaço).

Share this post


Link to post
Share on other sites
Tafs

Parece-me lógico. O split() realmente parece que vai suprir a necessidade.

Obrigado aos dois!  :confused:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.