3
respostas

Errno2 No such file or directory

Ele da esse erro, pensei que fosse o código que estava errado, porém, copiei a opinião do instrutor e continua dando o mesmo erro. Alguma dica ?

1) Crie uma classe chamada Livro com um construtor que aceita os parâmetros titulo, autor e ano_publicacao. Inicie um atributo chamado disponivel como True por padrão.

class Livro:
    def __init__(self, titulo, autor, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.ano_publicacao = ano_publicacao
        self.disponivel = True

2) Na classe Livro, adicione um método especial str que retorna uma mensagem formatada com o título, autor e ano de publicação do livro. Crie duas instâncias da classe Livro e imprima essas instâncias.

    def __str__(self):
        return f"Livro: {self.titulo} | Autor: {self.autor} | Ano de Publicação: {self.ano_publicacao}"

livro1 = Livro("Aprendendo Python", "John Doe", 2022)
livro2 = Livro("Data Science Fundamentals", "Jane Smith", 2020)

print(livro1)
print(livro2)

3) Adicione um método de instância chamado emprestar à classe Livro que define o atributo disponivel como False. Crie uma instância da classe, chame o método emprestar e imprima se o livro está disponível ou não.

    def emprestar(self):
        self.disponivel = False

livro3 = Livro("Python Cookbook", "Samuel Developer", 2019)
print(f"Antes de emprestar: Livro disponível? {livro3.disponivel}")
livro3.emprestar()
print(f"Depois de emprestar: Livro disponível? {livro3.disponivel}")

4) Adicione um método estático chamado verificar_disponibilidade à classe Livro que recebe um ano como parâmetro e retorna uma lista dos livros disponíveis publicados nesse ano.

    @staticmethod
    def verificar_disponibilidade(ano):
        livros_disponiveis = [livro for livro in Livro.livros if livro.ano_publicacao == ano and livro.disponivel]
        return livros_disponiveis

Livro.livros = [livro1, livro2, livro3]  # Adicionando os livros à lista de livros

5) Crie um arquivo chamado biblioteca.py e importe a classe Livro neste arquivo.

6) No arquivo biblioteca.py, empreste o livro chamando o método emprestar e imprima se o livro está disponível ou não após o empréstimo.

livro_biblioteca = Livro("Python in Practice", "Emily Coder", 2021)
print(f"Antes de emprestar (biblioteca): Livro disponível? {livro_biblioteca.disponivel}")
livro_biblioteca.emprestar()
print(f"Depois de emprestar (biblioteca): Livro disponível? {livro_biblioteca.disponivel}")

7) No arquivo biblioteca.py, utilize o método estático verificar_disponibilidade para obter a lista de livros disponíveis publicados em um ano específico.

ano_especifico = 2020
livros_disponiveis_ano = Livro.verificar_disponibilidade(ano_especifico)
print(f"Livros disponíveis em {ano_especifico}: {livros_disponiveis_ano}")

8) Crie um arquivo chamado main.py, importe a classe Livro e, no arquivo main.py, instancie dois objetos da classe Livro e exiba a mensagem formatada utilizando o método str.

from minha_classe import Livro  # Certifique-se de corrigir o nome do arquivo para o correto

livro_main1 = Livro("Python para Iniciantes", "Carlos Coder", 2021)
livro_main2 = Livro("Web Development Essentials", "Laura Developer", 2023)

print(livro_main1)
print(livro_main2)
3 respostas

Olá, Jhonatan! Tudo bem?

O erro "Errno 2 No such file or directory" geralmente ocorre quando o Python não consegue encontrar o arquivo que você está tentando acessar. Pelo que você descreveu, parece que o problema pode estar relacionado ao arquivo biblioteca.py ou main.py.

Aqui estão algumas dicas para resolver esse problema:

  1. Verifique se os arquivos biblioteca.py e main.py estão no mesmo diretório que o arquivo onde você definiu a classe Livro. Se não estiverem, mova-os para o mesmo diretório ou ajuste os caminhos de importação.

  2. Certifique-se de que o nome do arquivo e o nome da importação estão corretos. Por exemplo, se você nomeou o arquivo como biblioteca.py, a importação deve ser algo como:

    from biblioteca import Livro
    
  3. Verifique se o arquivo realmente existe no local esperado. Às vezes, pode ser um erro de digitação no nome do arquivo ou o arquivo pode estar em um diretório diferente.

Aqui está um exemplo prático para garantir que tudo está no lugar correto:

  • Estrutura de diretórios:

    projeto/
    ├── biblioteca.py
    ├── main.py
    └── minha_classe.py
    
  • Conteúdo de biblioteca.py:

    from minha_classe import Livro
    
    livro_biblioteca = Livro("Python in Practice", "Emily Coder", 2021)
    print(f"Antes de emprestar (biblioteca): Livro disponível? {livro_biblioteca.disponivel}")
    livro_biblioteca.emprestar()
    print(f"Depois de emprestar (biblioteca): Livro disponível? {livro_biblioteca.disponivel}")
    
    ano_especifico = 2020
    livros_disponiveis_ano = Livro.verificar_disponibilidade(ano_especifico)
    print(f"Livros disponíveis em {ano_especifico}: {livros_disponiveis_ano}")
    
  • Conteúdo de main.py:

    from minha_classe import Livro
    
    livro_main1 = Livro("Python para Iniciantes", "Carlos Coder", 2021)
    livro_main2 = Livro("Web Development Essentials", "Laura Developer", 2023)
    
    print(livro_main1)
    print(livro_main2)
    
  • Conteúdo de minha_classe.py:

    class Livro:
        livros = []
    
        def __init__(self, titulo, autor, ano_publicacao):
            self.titulo = titulo
            self.autor = autor
            self.ano_publicacao = ano_publicacao
            self.disponivel = True
            Livro.livros.append(self)
    
        def __str__(self):
            return f"Livro: {self.titulo} | Autor: {self.autor} | Ano de Publicação: {self.ano_publicacao}"
    
        def emprestar(self):
            self.disponivel = False
    
        @staticmethod
        def verificar_disponibilidade(ano):
            return [livro for livro in Livro.livros if livro.ano_publicacao == ano and livro.disponivel]
    
    livro1 = Livro("Aprendendo Python", "John Doe", 2022)
    livro2 = Livro("Data Science Fundamentals", "Jane Smith", 2020)
    livro3 = Livro("Python Cookbook", "Samuel Developer", 2019)
    

Caso mesmo olhando esses pontos você não consiga identificar a causa do erro, peço que compartilhe comigo um print de tela inteira de como você está testando o código. O print deve conter todas as pastas e arquivos da lateral esquerda e o terminal que você executou o código.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Ele dá esse erro de diretório antes de criar outra classe, ao concluir a etapa 2 tento executar e da esse erro, já apaguei e reescrevi o código pra ver se não era algum bug vscode. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Bom dia, Jhonatan! Tudo bem?

Esse erro está aparecendo por que você está rodando o código livro.py no arquivo errado, por conta disso, aparece a mensagem "No such file or directory" que em tradução livre significa "Arquivo ou pasta não encontrado".

Para resolver essa situação, você deve acessar a pasta que contém esse arquivo antes de executá-lo ou durante a escolha do arquivo a ser executado você deve passar o caminho para o arquivo. Segue os dois exemplos de forma prática:

Acessar a pasta para depois executar:

cd exercicios
python livro.py

Rodar arquivo passando o caminho para acessá-lo:

python exercicios/livro.py

Espero ter ajudado e caso tenha mais problemas estarei à disposição para ajudá-lo.

Bons estudos!