oliveiracarlos Posted June 7, 2012 at 02:57 PM Report Share #461202 Posted June 7, 2012 at 02:57 PM (edited) Boa tarde, sou novo em Python e tenho um exercicio para resolver que é o seguinte : f ) procura [ficheiro] palavra – Este comando deve procurar no ficheiro com o nome indicado, linhas que contenham a palavra indicada, e apresentar essas linhas. No caso de o comando ser chamado sem o argumento ficheiro, deve ser feita a pesquisa em todos os ficheiros da directoria corrente, e apresentados os resultados organizados por ficheiro. Até ao momento ja escrevi o seguinte código mas sem sucesso, será que me podiam ajudar "Exercicio 2 - Interpretador de comandos Python" import fileinput import sys import os debug = True # f) Função Procura Palava num ficheiro def procura_palavra(nome_ficheiro): ficheiro = open(nome_ficheiro, "r") line_num = 0 palavra = intput("Escolha a palavra a procurar") for line in ficheiro.readlines(): line_num += 1 if line.find(palavra): print(ficheiro.line) ficheiro.close() if __name__ == '__main__': nome_ficheiro = ("Trabalho_SO.txt") Edited June 7, 2012 at 09:11 PM by djthyrax GeSHi Link to comment Share on other sites More sharing options...
Gonka Posted June 7, 2012 at 03:40 PM Report Share #461209 Posted June 7, 2012 at 03:40 PM Pesquisa primeiro: http://www.portugal-a-programar.pt/topic/53451-procura-ficheiro-em-python/ Link to comment Share on other sites More sharing options...
oliveiracarlos Posted June 7, 2012 at 03:52 PM Author Report Share #461210 Posted June 7, 2012 at 03:52 PM Eu ja tinha visto este topico, mas aqui devolve o numero de linhas eu pretendo que me escreva a linha Link to comment Share on other sites More sharing options...
Dr_Lion Posted June 7, 2012 at 08:46 PM Report Share #461255 Posted June 7, 2012 at 08:46 PM (edited) Creio que tens um erro, dentro do for o print(ficheiro.line) deve ser só print(line) O programa lê linha a linha, compara com a palavra que queres, se estiver presente, verificas com um if, fazes o print dessa linha. Para obteres todos os ficheiros da directioria usa o método get.os.pathname ou algo parecido, qualquer pesquisa no google te indica como fazer isso em duas linhas num for. "for files in os.path.name print files" é um exemplo que podes reaproveitar O nome do ficheiro, verificas se existe o argumento. se nao existir, pegas em todos os ficheiros e adicionas a uma lista, depois é executares a presquisa para cada elemento da lista. Edited June 7, 2012 at 08:48 PM by Dr_Lion Link to comment Share on other sites More sharing options...
djthyrax Posted June 7, 2012 at 09:10 PM Report Share #461262 Posted June 7, 2012 at 09:10 PM (edited) Parece-me que esse código não deve ser teu, pois é bastante simples perceber o que ele faz (a mais) e o que é preciso alterar. Para leres um ficheiro linha a linha e mostrá-la basta fazeres algo deste género: ficheiro = open('ficheiro.txt', 'r') for linha in ficheiro.readlines(): print(linha) Com esta pequena dica deves conseguir pôr o programa a fazer o que queres fazer para um ficheiro. Para fazeres a parte da procura pelos ficheiros de uma directoria, investiga o módulo glob. http://docs.python.o...brary/glob.html Relembro que a delimitação de blocos de código em Python é feita usando whitespace (tabulações e espaços), e a leitura do teclado deve ser feita usando a função input ou a raw_input, sendo preferível a segunda. Edited June 7, 2012 at 09:12 PM by djthyrax Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
oliveiracarlos Posted June 8, 2012 at 01:03 AM Author Report Share #461284 Posted June 8, 2012 at 01:03 AM OBrigado pela ajuda, O Código é meu, mas é baseado em diversas pesquisas que ja tinha feito antes. Obrigado pela tua ajuda, já consegui por a funcionar Link to comment Share on other sites More sharing options...
djthyrax Posted June 8, 2012 at 01:59 PM Report Share #461409 Posted June 8, 2012 at 01:59 PM Ainda bem, era esse o objectivo. 😉 Depois mete aí o código, pode ajudar alguém no futuro. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
oliveiracarlos Posted June 10, 2012 at 04:46 PM Author Report Share #461793 Posted June 10, 2012 at 04:46 PM (edited) Boa tarde a todos, Julguei já ter o meu problema resolvido mas parece que não. Tenho estado a trabalha no seguinte código cujo objectivo é percorrer um ficheiro linha a linha e se a linha contiver a palavra pretendida ele imprime a linha mas não esta a funciona, podiam me ajudar? #!/usr/bin/python2.7 # coding: utf-8 import os import sys import pwd import time import string from stat import * 'Exercicio 2 - Interpretador de comandos Python' # f) Função Procura Palava num ficheiro def procura_palavra(nome_ficheiro): ficheiro = open(nome_ficheiro, 'r') l = len(ficheiro.readlines()) palavra = raw_input('Escolha a palavra a procurar \n') x = 1 while (x <= l): for palavra in ficheiro.readline(x): print ficheiro.readline(x) x = x+1 ficheiro.close() if __name__ == '__main__': nome_ficheiro = ('Trabalho.txt') procura_palavra(nome_ficheiro) Edited June 10, 2012 at 04:54 PM by oliveiracarlos Link to comment Share on other sites More sharing options...
djthyrax Posted June 13, 2012 at 03:13 AM Report Share #462402 Posted June 13, 2012 at 03:13 AM x=1 while x <=1 x+=1 Qual é a lógica disto? Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Pedro C. Posted June 23, 2012 at 12:35 AM Report Share #465079 Posted June 23, 2012 at 12:35 AM (edited) Vê este exemplo: for line in open("file.txt"): if "Python" in line: print line Está a verificar cada linha de um ficheiro. Se encontrar a palavra "Python" no ficheiro faz o print da linha inteira. Agora é possível, aliás provável, que este método seja tudo menos à prova de bala. Por exemplo não sei até que ponto pequenas variações como estar colado a caracteres como pontos ou endlines ou pior pode causar com que ele detecte a palavra. Nunca usei mas acho que o módulo "re" foi feito para este tipo de coisas: http://docs.python.org/library/re.html Edited June 30, 2012 at 01:55 PM by djthyrax Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now