Caminho aboluto de uma pasta com python

eu fiz um app pra armazenar informações de venda e compra onde, já automaticamente o programa cria uma pasta específica para essas informações, além de, dentro dessa pasta, criar pastas divididas em meses, e dentro dessas pastas, os arquivos resgistrados por dia.

#módulo para verificação e atualização de data de estocagem.
import time, os.path, os

agora = time.localtime()

#verifica se já existe a pasta de destino, caso não, é criada.
try:
    os.mkdir(f'/Users/lucas/OneDrive/Documentos/VITRINE online/')
except FileExistsError:
    pass
finally:
    def cria_arm_ano():
        if not os.path.exists(f'/Users/lucas/OneDrive/Documentos/VITRINE online/armazenamento_{agora.tm_year}/'):
            os.mkdir(f'/Users/lucas/OneDrive/Documentos/VITRINE online/armazenamento_{agora.tm_year}/')

    def cria_arm_mes():
        if not os.path.exists(f'/Users/lucas/OneDrive/Documentos/VITRINE online/armazenamento_{agora.tm_year}/mes_{agora.tm_mon}'):
            os.mkdir(f'/Users/lucas/OneDrive/Documentos/VITRINE online/armazenamento_{agora.tm_year}/mes_{agora.tm_mon}')

    def cria_vnd_ano():
        if not os.path.exists(f'/Users/lucas/OneDrive/Documentos/VITRINE online/venda_{agora.tm_year}/'):
            os.mkdir(f'/Users/lucas/OneDrive/Documentos/VITRINE online/venda_{agora.tm_year}/')

    def cria_vnd_mes():
        if not os.path.exists(f'/Users/lucas/OneDrive/Documentos/VITRINE online/venda_{agora.tm_year}/mes_{agora.tm_mon}'):
            os.mkdir(f'/Users/lucas/OneDrive/Documentos/VITRINE online/venda_{agora.tm_year}/mes_{agora.tm_mon}')

o problema é que eu quero que o programa já encontre o caminho automaticamente sem ser necessário escrever no código o caminho onde essa pasta principal deva ser criada, pois foi necessário escrever o caminho diretamente no código toda vez.
o que eu quero saber é se existe no python alguma função que possa ser passado um diretório como parâmetro e retornar como resultado o caminho absoluto desse diretório.

Você pode usar:

from pathlib import Path
home = str(Path.home())

print(home)

Isso vai retornar o caminho para a pasta home do usuário, no meu caso: C:\Users\edson

1 curtida

poxa cara, vlw!!! era disso mesmo que eu estava precisando.
o código final ficou assim:

#módulo para verificação e atualização de data de estocagem.
import time, os.path, os
from pathlib import Path

os.chdir(f'{Path.home()}/OneDrive/Documentos')
home = os.getcwd()
agora = time.localtime()

#verifica se já existe a pasta de destino, caso não, é criada.
try:
    os.mkdir(f'{home}/VITRINE online/')
except FileExistsError:
    pass
finally:
    def cria_arm_ano():
        if not os.path.exists(f'{home}/VITRINE online/armazenamento_{agora.tm_year}/'):
            os.mkdir(f'{home}/VITRINE online/armazenamento_{agora.tm_year}/')

    def cria_arm_mes():
        if not os.path.exists(f'{home}/VITRINE online/armazenamento_{agora.tm_year}/mes_{agora.tm_mon}'):
            os.mkdir(f'{home}/VITRINE online/armazenamento_{agora.tm_year}/mes_{agora.tm_mon}')

    def cria_vnd_ano():
        if not os.path.exists(f'{home}/VITRINE online/venda_{agora.tm_year}/'):
            os.mkdir(f'{home}/VITRINE online/venda_{agora.tm_year}/')

    def cria_vnd_mes():
        if not os.path.exists(f'{home}/VITRINE online/venda_{agora.tm_year}/mes_{agora.tm_mon}'):
            os.mkdir(f'{home}/VITRINE online/venda_{agora.tm_year}/mes_{agora.tm_mon}')

que não depende mais tanto dos caminhos do meu computador como o código anterior.
mto obg :call_me_hand:

Uma outra dica é que você pode usar o método os. makedirs para criar uma árvore inteira de diretórios, sem precisar se preocupar se já existem ou não.
No seu caso as quatro funções pra criar diretório poderiam ser substituídas por:

os.makedirs(f'{home}/VITRINE online/venda_{agora.tm_year}/mes_{agora.tm_mon}')
os.makedirs(f'{home}/VITRINE online/armazenamento_{agora.tm_year}/mes_{agora.tm_mon}')
2 curtidas

fiz separado devido algumas verificações que é feito em outras partes do código, mas valeu
:call_me_hand: de qqr forma!!!