7
respostas

Pycharm - Working Directory - Diretório de Trabalho

Professor, Como configuro o Working Directory do Pycharm para poder acessar os arquivos que estão dentro do diretório configurado no pycharm? Quando tento acessar recebo mensagem de que o arquivo não foi encontrado, mas se eu configurar esta mesma subpasta como Working Directory consigo ver os arquivos, mas não consigo ver os demais arquivos que estão em outras pastas no mesmo diretório.

Muito obrigado pela atenção, Henrique

7 respostas

Bom dia Henrique,

Experimente clicar com o botão direito no mouse sobre o nome do seu projeto (no exemplo deste curso é o projeto "jogos") e escolha a opção "Replace in Files". Ela te permitirá alterar o diretório dos arquivos que compõem o projeto.

Alternativamente, pode-se utilizar as teclas de atalho Ctrl + Shift +R para fazer isso.

Espero ter ajudado, bons estudos!

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi Henrique,

Olhando seu código parece que você passa por dois níveis de subdiretórios, tentando abrir todos os arquivos como se fossem arquivos do excel com pd.read_excel.

A primeira sugestão quando você tem um FileNotFoundError é imprimir o path. Você quer ter certeza que o path absoluto ou completo está correto. No seu caso é a variável file_path. Qual o valor dela antes do erro ocorrer? E, separadamente, quais os valores de path, x e y? Está tudo certinho?

Paths sao faceis de errar a olho nu na conferição, o que eu faço depois de ter a vairavel file_path e copiar com copy, ir em um terminal e fazer um "ls -la PASTE" para ter certeza que ele encontr ao arquivo. A maior parte dos problemas costuma aparecer nesse trecho, oque isolaria teu problema para poder então resolve-lo.

Caso não encontre nessa primeira parte, então o arquivo existe mas o python não está com acesso, oque seria estranho. Em geral o problema de path está na concatenação, em caracteres especiais no caminho (seu caminho possui espaço em branco, você pode testar se funciona com diretório sem espaço em branco e ai isolar que o problema esta aí), ou permissões. Meu chute é que ao imprimir a variavel file_path você terá algum cmainho

[]s

Olha, cada dia fico mais fã de vcs. Sou aluno do Alura há 3 anos e já faço a renovação automática todo ano. Fiz algumas verificações e coloquei em alguns prints para ver se consegue me ajudar.

#Criei um array para ser preenchido ao final com todos os arquivos excels para junção em um só arquivo.
appended_rods = []

#Somente para conferência para saber se o arquivo está realmente no mesmo local do código.
#print(os.getcwd())

#Aqui é o endereço de onde os arquivo serão manipulados.
path = '/Users/Henrique/Desktop/RotaBrasilGeral'

for x in os.listdir(path):
    if not x.startswith("."):
        print(path)
        print(x)
        for y in os.listdir(os.path.join(path, x)):
            if not y.startswith("."):
                print(os.path.join(path, x))
                print(os.path.join(path, x, y))
                print(y)
                file_path = os.listdir(os.path.join(path, x, y))
                print(file_path)

                rod_merged = pd.read_excel(file_path, header=[0])

no console retorna o seguinte:

/Users/Henrique/opt/anaconda3/envs/juncaoRod/bin/python /Users/Henrique/PycharmProjects/RotaBrasil/testeRotaBrasil.py
/Users/Henrique/Desktop/RotaBrasilGeral
rodGeral
/Users/Henrique/Desktop/RotaBrasilGeral/rodGeral
/Users/Henrique/Desktop/RotaBrasilGeral/rodGeral/Relatorio-ROD_UO-190000000000_De_20210619_a_20210619.xlsx
Relatorio-ROD_UO-190000000000_De_20210619_a_20210619.xlsx
Traceback (most recent call last):
  File "/Users/Henrique/PycharmProjects/RotaBrasil/testeRotaBrasil.py", line 29, in <module>
    file_path = os.listdir(os.path.join(path, x, y))
NotADirectoryError: [Errno 20] Not a directory: '/Users/Henrique/Desktop/RotaBrasilGeral/rodGeral/Relatorio-ROD_UO-190000000000_De_20210619_a_20210619.xlsx'

Process finished with exit code 1

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Boa Henrique, obrigado!

Achei um problema aqui (talvez não o único). Repara que o erro agora é 20, não é diretório, e é na linha 29. Isto é, ao tentar buscar com os.listdir deu erro. Voce esta considerando que y é um diretorio, mas é um arquivo.

os.path.isdir() pode ser usado para saber se (os.path.join(path,x,y)) é um diretorio antes de chamar o listdir

[]s

No caso de ser um arquivo o que eu devo usar ao invés de os.listdir() ou os.path.join()? e outra coisa, uma dúvida que tenho é que quando colocamos manualmente o endereço do path geralmente colocamos "r'" e colocamos o path entre aspas simples. A minha dúvida é que acho que quando uso o os.listdir ou o os.path.join ele não coloca este "r" e também não coloca entre aspas simples. Será que pode ser isto ou não faz sentido?

Oi Henrique

O is_file vai dizer se é um arquivo (não diretório). A documentação do os.path é super rica, vale a pena gastar uns 15-30 minutinhos olhando a riqueza dela pq acabamos usando bastante no dia a dia: https://docs.python.org/3/library/os.path.html

Tente pegar o costume de ler documentação, eu costumo falar que diferencia quem começa de quem amadurece :) Perder o medo aos poucos dela. Voce pode inclusive ir testando as várias funções que a docmentação cita.

Sobre a pergunta das aspas. Aspas simples e duplas no python em geral como nesse caso não faz diferença.

O 'r' costuma ser usado para algumas funções para dizer que é emodo de leitura (quero abrir um arquivo em modo leitura, read). Na documentação vai ter a descrição de cada funçao, você vai ver que a maior parte do ospath não pede esse parametro

[]s