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

Como desenvolver um

Desenvolver uma função que "passeia" pelos arquivos “vinculados”. Cada arquivo visitado pelo programa terá zero ou mais vínculos, um por linha, com outros arquivos e nada mais. Um vínculo para um arquivo é simplesmente o nome do arquivo. Por exemplo, o conteúdo do arquivo 'file0.txt' é:

file0.txt is:
   file1.txt
   file2.txt

A primeira linha representa o vínculo para o arquivo file1.txt, e o segundo é um vínculo para o arquivo file2.txt.

Implemente o método recursivo crawl(), que tome como entrada um nome de arquivo (como uma string), exiba uma mensagem informando o arquivo que está sendo visitado, abra o arquivo, leia cada vínculo e continue a busca recursivamente sobre cada vínculo. O exemplo a seguir usa um conjunto de arquivos empacotados no arquivo files.zip.

Arquivo: files.zip

>>> crawl('file0.txt')
Visitando file0.txt
Visitando file1.txt
Visitando file3.txt
Visitando file4.txt
Visitando file8.txt
Visitando file9.txt
Visitando file2.txt
Visitando file5.txt
Visitando file6.txt
Visitando file7.txt

O arquivo files.zip está aqui:

https://easyupload.io/151sv4

Alguma ideia? Só imagino que tenha que usar a biblioteca "os" do python...

2 respostas
solução!

Olá Edson, tudo bem?

Antes de mais nada, acredito que já resolvi um problema seu de recursão e não sei se você viu a resposta, mas qualquer coisa o link está aqui: Recursão Base A, B

Vamos lá, para criar um programa recursivo precisamos da condição de parada e reduzir o problema em pedaços menores:

  • Nossa condição de parada será quando o arquivo não tiver nada
  • Vamos reduzir o problema lendo cada arquivo presente no atual

O código vai ficar assim:

def lerArquivo(nomeArquivo):
    if nomeArquivo == '': return
    arquivo = open(nomeArquivo, "r")
    conteudo = arquivo.read().split("\n")
    print("Visitando: ", nomeArquivo)
    for i in range( len(conteudo)): 
        lerArquivo(conteudo[i])
    arquivo.close()


lerArquivo("file0.txt");

Dessa forma o que estamos fazendo é verificar se o nome do arquivo é vazio, caso contrário abrimos o arquivo utilizando a função open do Python que recebe como parâmetro o nome do arquivo e o que queremos fazer, no nosso caso, "R" de read.

Após isso, nós lemos o conteúdo utilizando a função read e separamos o conteúdo do arquivo em uma lista, atentando que o último elemento dessa lista sera ' ' ( linha em branco ), dessa maneira iremos percorrer todos os elementos dessa lista chamando a mesma função, e após ler, eu utilizo a função close.

Compreendeu?

Abraços e Bons Estudos!

@Geovani Granieri : ajudou MUITO! Obrigado